javascript - dojo toolkit tutorial español
Alcance variable de Dojo Javascript (1)
Estoy usando dgrid y estoy intentando configurar DataStore externamente. Cuando la página se carga, llamo aliasTicket.load()
para crear la grilla. En el momento en que se carga la grilla, el datasource
es nulo. Cuando se ejecuta una consulta, setAliasSource(aliasData);
Está establecido.
No hay errores, sin embargo, la cuadrícula aún está vacía. AliasStore se está actualizando con los datos, sin embargo, no se refleja en la cuadrícula incluso después de actualizar la cuadrícula. ¿Cómo puedo obtener los datos reflejados en la cuadrícula después de la consulta?
Objeto Javascript
var aliasTicket = (function (){
var aliasData = [];
require([ "dojo/store/Observable", "dojo/store/Memory"]);
var aliasStore = new dojo.store.Observable(new dojo.store.Memory({
data: aliasData,
idProperty: "id"
}));
return{
load:function(){
require([
........
], function(declare, Memory, OnDemandGrid, ColumnSet, Selection,
selector, Keyboard, DijitRegistry, editor, ColumnHider,
registry, Observable,lang) {
aliasData = this.aliasData;
var Store = this.aliasStore = new dojo.store.Observable(new dojo.store.Memory({
data: aliasData,
idProperty: "id"
}));
console.log(Store);
var CustomAliasNameGrid = declare([OnDemandGrid, selector, Selection, Keyboard, editor, DijitRegistry, ColumnHider]);
var aliasNameGrid = new CustomAliasNameGrid({
store: Store,
columns: {
id: {
label: "Id",
field: "id",
hidden: true,
autoSizeColumn: true
},
employeeTicketId: {
label: "Employee Ticket Id",
field: "employeeTicketId",
hidden: true,
autoSizeColumn: true
},
chkBox: selector({}),
aliasName: {
label: "Alias Names",
field: "aliasTicketName",
autoSizeColumn: true,
formatter: function(str) {
return str.replace(//w/S*/g, function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}
}
},
selectionMode: "none",
loadingMessage: "Loading data...",
noDataMessage: "No results found....",
allowSelectAll: true
}, "aliasNameGrid");
aliasNameGrid.refresh()
});
},
setAliasSource: function (data){
console.log(data);
this.aliasSource = data;
},
setAliasData: function (data){
this.aliasData = data;
},
getAliasSource: function (){
return this.aliasSource;
}
};
})();
Establecer datos del almacén de datos
aliasData = [{.....},
{.....},
{......];
require(["dijit/dijit"]);
aliasTicket.setAliasSource(aliasData);
dijit.byId(''aliasNameGrid'').refresh();
Está configurando ''this.Store'' a una matriz de objetos, no a un objeto real ''dojo store''. Siguiendo tu código, no puedo ver dónde usas realmente ''this.Store''. Dentro del código de la cuadrícula, veo una variable local llamada ''Tienda''.
Así que no estoy seguro si estoy siguiendo el ejemplo de su código aquí, pero debe "configurar" la tienda de la grilla y luego actualizarla. Algo como esto.
setAliasSource: function (data){
console.log(data);
this.Store = data;
dijit.byId(''aliasNameGrid'').set("store",new dojo.store.Observable(new dojo.store.Memory({ data: data,idProperty: "id"}));
dijit.byId(''aliasNameGrid'').refresh();
},