我写了一个函数来获取列表中的项目数。它将列表的主键(list_pk)作为输入,我们想要计算它们的项目。然后,它会在数据存储中查询“list”等于list_pk的所有列表项,并对它们进行计数......
function getListLength(list_pk){
// Data store of list items
var store = getStore();
dojo.global["length"] = -1;
// Get all list items that belong to the list
store.fetch({
query: {list : list_pk},
onComplete: function(items, request){
dojo.global["length"] = items.length;
console.log("onComplete() length: " + dojo.global["length"]);
}
});
console.log("after onComplete() length: " + dojo.global["length"]);
}
如果列表长度为5,则上面显示:
onComplete() length: 5
after onComplete() length: -1
因此它正确计算了项目数,但无法更新全局变量“length”。有谁知道为什么?
答案 0 :(得分:3)
这是正确的行为。 store.fetch
是异步调用。调用onComplete
后,dojo.global["length"]
将会更新。如果您尝试在store.fetch
之后获取全局变量,则可能尚未调用onComplete
,因此您仍然可以获得初始值。
只需将代码放在dojo.global["length"]
函数内使用onComplete
。