我试图用所有"用户"创建一个dxList。在我的SQL数据库中。请参考下面的代码。
MobileApplication.User = function (params) {
var baseAddress = 'http://localhost:8733/Design_Time_Addresses/TestService/Service/';
var users = [];
function getUsers() {
$.getJSON(baseAddress + 'users?callback=?',
function (json) {
//This return a valid Json string, and the variable "json" is basically the array.
users = json;
});
}
getUsers();
console.log("USERS ARRAY: ");
console.log(users);
var viewModel = {
listItems: users
};
return viewModel;
};
param json
返回一个有效的json数组(如果我要调用console.log(json)
,它将在浏览器控制台中返回一个数组。
我尝试将此数组分配给users
数组,但console.log("USERS ARRAY: ")
和console.log(users)
返回一个空数组。
为什么它会返回一个空数组?用户[]是否未分配给从json构建的数组?
除此之外,我是DevExtreme的新手,我试图将此数组应用于dxList。请参阅下文。
<div data-options="dxView : { name: 'User', title: 'User' } ">
<div class="home-view" data-options="dxContent : { targetPlaceholder: 'content' } ">
<div data-bind="dxList: { items: listItems }">
<div data-options="dxTemplate: { name: 'item' } ">
<div data-bind="text: Name"></div>
</div>
</div>
</div>
</div>
我在这里做的正确吗?我读到的关于dxList的地方,他们要么使用本地数据(文本文件还是简单的数组),而且我不确定如何实现这一点?
答案 0 :(得分:0)
$.getJSON
函数异步工作,因此console.log(users);
不显示任何内容。
在您的情况下,我建议您使用ko.observableArray来保存已加载的用户。
var users = ko.observableArray([]);
function getUsers() {
$.getJSON(baseAddress + 'users?callback=?',
function (json) {
//This return a valid Json string, and the variable "json" is basically the array.
users(JSON.parse(json));
});
}
getUsers();
var viewModel = {
listItems: users
};
此sample显示了这种方法。
此外,您可以使用the custom store对象来处理远程数据。请参阅此示例 - http://jsfiddle.net/sergfry/dssa338u/1/