淘汰赛JS结合和Ajax需要更长的时间来加载(Knockout JS binding and aja

2019-10-18 07:27发布

我想下面的数据,以用于KO映射

我尝试初始化使用的document.ready阿贾克斯成功事件它

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

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

问题是AJAX是采取更长的时间来加载,然后JavaScript错误弹出说视图模型犯规存在。

所以

  1. 我怎么能告诉淘汰赛重新绑定一次阿贾克斯已成功加载

  2. 有反正我可以告诉KO不结合/隐藏表时,我从阿贾克斯得到的数据是空的?

从继续使用KnockoutJS自动绑定

Answer 1:

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

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>

见小提琴

我希望它能帮助。



Answer 2:

你需要调用ko.applyBinding在AJAX的回调,以确保数据是可用的。 目前,这是之前发生的事情,然后在顶部。 这是你的问题。 如果您想进一步的帮助,我建议你创建你的问题的小提琴,让我和其他人试图修复它。



文章来源: Knockout JS binding and ajax taking longer to load