我正在使用Knockout AMD Helpers加载 ViewModels,并带有“模块绑定”功能。
通常,当我需要加载远程数据时,我使用延迟对象来确保只有在 ViewModel 上的所有数据都可用后才调用 ko.ApplyBindings。
我创建了一个示例 jsfiddle来使用延迟的 ajax 调用来说明我的问题:
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 帮助程序但延迟 ApplyBindings,直到我的所有数据都在 ViewModel 上准备好?