私は自分のアプリに独自の単純なテンプレート システムを使用しており、ページごとに不明な数の「同じ」テンプレートをロードします。
基本的に、ajax 呼び出しを介してデータを取得し、uniqueId を取得します。次に、テンプレートをページにロードし、uniqueId を使用して ID と data-bind="with: " を適用します。
<div id="content-uniqueId">
<div data-bind="with: uniqueId">
...
</div>
</div>
次に、関数を呼び出し、uniqueId を使用して observableArray を作成しようとしています。これにより、「with」にバインドされます。
何かのようなもの:
function(uniqueId) {
var theObservable = uniqueId;
theObservable = ko.observableArray(); // make the observable name equal to uniqueId
// get some data
theObservable(new data);
}
問題を解決するためにJS Fiddleを作成しましたが、ajaxデータを取得していないか、一意のIDを渡していないため、機能しません。
編集:
以下の Tyrsius の提案に従って、JS Fiddle を更新しました。
this[uniqueId] = ko.observableArray(new entityApp.dataContext.EntityModel(data));
間違いなく一歩近づきましたが、エラーが発生しました:
監視可能な配列を初期化するときに渡される引数は、配列、null、または未定義でなければなりません
しかし、「new entityApp.dataContext.EntityModel(data)」はオブジェクト配列を返すので、問題ないはずです。