dojojavascript变量作用域
我正在使用并尝试在外部设置数据存储。当页面加载时,我调用dojojavascript变量作用域,javascript,json,dojo,scope,dgrid,Javascript,Json,Dojo,Scope,Dgrid,我正在使用并尝试在外部设置数据存储。当页面加载时,我调用aliasTicket.load()来创建网格。网格加载数据源时为空。执行查询时,setAliasSource(aliasData)已设置 没有错误,但网格仍然为空。aliasStore正在使用数据更新,但即使在刷新网格后,它也不会反映在网格上。如何在查询后获得网格中反映的数据 Javascript对象 var aliasTicket = (function (){ var aliasData = []; requ
aliasTicket.load()
来创建网格。网格加载数据源时
为空。执行查询时,setAliasSource(aliasData)代码>已设置
没有错误,但网格仍然为空。aliasStore正在使用数据更新,但即使在刷新网格后,它也不会反映在网格上。如何在查询后获得网格中反映的数据
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;
}
};
})();
设置数据存储数据
aliasData = [{.....},
{.....},
{......];
require(["dijit/dijit"]);
aliasTicket.setAliasSource(aliasData);
dijit.byId('aliasNameGrid').refresh();
您正在将“this.Store”设置为对象数组,而不是真正的“dojo Store”对象。按照您的代码,我看不到您实际在哪里使用“this.Store”。在网格代码中,我确实看到了一个名为“Store”的局部变量
因此,我不确定我是否遵循了您的代码示例,但是,您应该“设置”网格存储,然后刷新它。像这样的
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();
},
我在加载函数var store=this.aliasStore=new dojo.store.Observable(new dojo.store.Memory({data:aliasData,idProperty:“id”}))中声明了store;我认为,由于load已首先运行,因此需要再次运行以反映数据,但再次运行load可能不是一个好主意,因为小部件已注册。在调用set('store',…)之后,不必调用refresh,因为set('store',…)-这将为您刷新。