DevExtreme - 尝试从SQL

时间:2015-08-06 07:02:22

标签: javascript devextreme phonejs

我试图用所有"用户"创建一个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的地方,他们要么使用本地数据(文本文件还是简单的数组),而且我不确定如何实现这一点?

1 个答案:

答案 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/