使用淘汰赛助手控制Applybindings

时间:2013-08-05 14:38:04

标签: knockout.js requirejs amd knockout-amd-helpers

我正在使用Knockout AMD Helpers加载ViewModel,并使用“module binding”功能。

通常,当我需要加载远程数据时,我使用延迟对象来确保仅在ViewModel上的所有数据都可用之后调用ko.ApplyBindings。

我使用延迟的ajax调用创建了一个sample jsfiddle来说明我的问题:

self.initialize = function () {
                    self.name("This is a sample article");
                    self.getArticleTypes(self.articleTypes);
                };

self.getArticleTypes = function (observableArticleTypes) {
                    var fakeData = {
                        delay: 5
                    };
                    $.ajax({
                        async: true,
                        cache: false,
                        type: 'post',
                        url: '/echo/json/',
                        data: fakeData,
                        success: function (data) {
                            observableArticleTypes([{
                                id: 1,
                                articleType: 'Breaking News'
                            }, {
                                id: 2,
                                articleType: 'Weather'
                            }]);

                            console.log("Data loaded from server");

                        }
                    });
                };

如何构建我的代码,使用AMD Helpers但延迟ApplyBindings直到我的所有数据都准备好在ViewModel上?

1 个答案:

答案 0 :(得分:1)

对于这种情况,applyBindings已经发生,因此您可能希望仅允许可观察的部分在数据可用时更新,或者使用ifwith或{来控制特定部分{1}}绑定。

例如,您可以将您的区域包裹在:

template
相关问题