3

私は自分のアプリに独自の単純なテンプレート システムを使用しており、ページごとに不明な数の「同じ」テンプレートをロードします。

基本的に、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を渡していないため、機能しません。

JSフィドルはこちら

編集:

以下の Tyrsius の提案に従って、JS Fiddle を更新しました。

this[uniqueId] = ko.observableArray(new entityApp.dataContext.EntityModel(data));

間違いなく一歩近づきましたが、エラーが発生しました:

監視可能な配列を初期化するときに渡される引数は、配列、null、または未定義でなければなりません

しかし、「new entityApp.dataContext.EntityModel(data)」はオブジェクト配列を返すので、問題ないはずです。

4

1 に答える 1

3

Javascript は、そのオブジェクト インデクサーを使用して、動的割り当てとリフレクションを簡単にします。

var ViewModel = function(propName) {
    this[propName] = ko.observable("reflection");
};

ko.applyBindings(new ViewModel("dynamic"));

これは、バインディングを示すフィドルです。

于 2013-03-28T21:18:08.420 に答える