私はKnockout AMD Helpersを使用して ViewModel をロードし、「モジュール バインディング」機能を使用しています。
通常、リモート データをロードする必要がある場合、遅延オブジェクトを使用して、すべてのデータが ViewModel で利用可能になった後にのみ ko.ApplyBindings が呼び出されるようにします。
遅延 ajax 呼び出しを使用して問題を説明するために、サンプル 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 ヘルパーを使用しながら、ViewModel ですべてのデータの準備ができるまで ApplyBindings を遅らせて、コードを設計するにはどうすればよいですか?