1

我正在尝试使用以下数据进行 KO 映射 数据集

我尝试使用 document.ready 中的 ajax 成功事件对其进行初始化

var organisationData = data.d; var orgObject = { organisationsData: organisationData }; 

var newviewmodel = ko.viewmodel.fromModel(orgObject); 

问题是 ajax 需要更长的时间来加载,然后弹出 javascript 错误,说 viewmodel 不存在。

所以

  1. 成功加载 ajax 后如何告诉 Knockout 重新绑定

  2. 当我从 ajax 获得的数据为空时,我是否可以告诉 KO 不要绑定/隐藏表格?

使用 KnockoutJS 自动绑定

4

2 回答 2

2

我做了一个小提琴,用计时器替换了服务器调用。

JS:

var vm = {
    items: ko.observableArray()
};
ko.applyBindings(vm);

setTimeout(function(){
    var rawData =[
        {name:'item1'},
        {name:'item2'},
    ];
        ko.mapping.fromJS(rawData, {}, vm.items);
    // to ensure that name is an observable
    var item1Name = vm.items()[0].name(); 
    console.log(item1Name);
},1500);

看法 :

<table>
    <tbody data-bind="foreach : items">
        <tr>
            <td data-bind="text : name"></td>
        </tr>
    </tbody>
</table>
<span data-bind="visible : items().length == 0">Loading...</span>

见小提琴

我希望它有所帮助。

于 2013-07-02T11:22:31.583 回答
1

您需要在 ajax 的回调中调用 ko.applyBinding 以确保数据可用。目前,这发生在顶部之前。这是你的问题。如果您需要进一步的帮助,我建议您解决您的问题,让我和其他人尝试为您解决它。

于 2013-07-02T11:45:12.963 回答