これが私のマークアップです:
<section id="Application">
<!-- ko ifnot: initialized -->
<span>Loading...</span>
<!-- /ko -->
<ul data-bind="template:{name: 'clientList', foreach:clients}">
</ul>
<ul data-bind="template:{name: 'storyList', foreach:stories}">
</ul>
</section>
これが私のテンプレートです(それらは別々のファイルにあります):
function IncompleteStoriesViewModel() {
//data
var self = this;
self.initialized = ko.observable(false);
self.stories = ko.observableArray();
(function () {
$.ajax({
url: lucidServer.getIncompleteStory(1),
success: function (data) {
ko.mapping.fromJS(data, {}, self.stories);
self.initialized(true);
}
});
})();
};
ko.applyBindings(new IncompleteStoriesViewModel());
function ClientViewModel() {
//data
var self = this;
self.initialized = ko.observable(false);
self.clients = ko.observableArray();
(function () {
$.ajax({
url: lucidServer.getClients(1),
success: function (data) {
ko.mapping.fromJS(data, {}, self.clients);
self.initialized(true);
}
});
})();
};
ko.applyBindings(new ClientViewModel());
私のテンプレートファイルは問題ありません。htmlでどちらか一方を呼び出すと、それぞれが個別に機能しますが、両方を表示しようとすると、最初のファイルのみがレンダリングされ、2番目のファイルはエラーをスローします。が定義されていません'または'クライアントが定義されていません'
私はこれを別の方法で実行する必要があると確信しています。方法がわかりません。私の目標は、同じページに異なるテンプレートをレンダリングする最大10〜15のビューモデルを用意することです。