/ / dgrid La tienda JsonRest no funciona: asíncrona, dgrid

El almacén dgrid JsonRest no funciona - asíncrono, dgrid

Tengo lo siguiente:

require([
"dojo/dom",
"dojo/on",
"dojo/store/Observable",
"dojo/store/JsonRest",
"dojo/store/Memory",
"dgrid/OnDemandGrid"
], function (dom, on, Observable, JsonRest, Memory, OnDemandGrid) {

var store = new JsonRest({
target: "client/list",
idProperty: "id"
});

var grid = new OnDemandGrid({
columns: {
"id": "ID",
"number": "Name",
"description": "Description"
},
sort: "lastName",
store: store
}, "grid");
});

client / list es una url de descanso que devuelve un objeto json {data: [...]}, pero el contenido de la lista nunca aparece: /

Creo que el problema es causado por la carga asincrónica de datos, porque con un objeto codificado json el contenido aparece

EDITAR:

He logrado lograr esto usando un dojo / solicitud, pero el JsonRest normalmente no debería actuar de la misma manera. ¿Alguien puede señalarme en la dirección correcta?

require([
"dojo/dom",
"dojo/on",
"dojo/store/Memory",
"dojo/request",
"dgrid/OnDemandGrid"
], function (dom, on, Memory, request, OnDemandGrid) {

request("client/list", {
handleAs: "json"
}).then(function (response) {
// Once the response is received, build an in-memory store with the data
var store = new Memory({ data: response });

// Create an instance of OnDemandGrid referencing the store
var grid = new OnDemandGrid({
store: store,
sort: "id", // Initialize sort on id, ascending
columns: {
"id": "ID",
"number": "Name",
"description": "Description"
}
}, "grid");
console.log(store);

on(dom.byId("queryForm"), "input", function (event) {
event.preventDefault();
grid.set("query", {
// Pass a RegExp to Memory"s SimpleQueryEngine
// Note: this code does not go out of its way to escape
// characters that have special meaning in RegExps
description: new RegExp(this.elements.last.value, "i")
});
});

on(dom.byId("queryForm"), "reset", function () {
// Reset the query when the form is reset
grid.set("query", {});
});
});
});

Respuestas

0 para la respuesta № 1

Ok problema encontrado: /

Mi url "cliente / lista" estaba devolviendo un objeto json como este:

{data: [{id:"1", label: "test"}, {id:"2", label: "test"}]}

Resulta que el objeto JsonRest ya está encapsulando datos en un datos nodo, por lo que al devolver un json como este:

{[{id:"1", label: "test"}, {id:"2", label: "test"}]}

todo funcionó bien :)