3

次のように、呼び出されたときに独自の UI を作成するノックアウト\jQuery プラグインを構築しています。

<input type="text" name="filter" id="filter" />

// renders ui
$("#filter").myPlugin();

いつものjQueryのもの。ただし、動作の一部として、ノックアウト テンプレートを利用したいと考えています。ノックアウトは、ページが最初にロードされたときにページにあるテンプレートのみを認識するようです。

問題を示す簡潔な例を次に示します。

<div id="container">
    <div data-bind="template: { name: 'fieldsTemplate', foreach: FilterRows() }">
    </div>
</div>

そしてjs:

var fieldstemplate = $('<script>', { type: "text/html", id:"fieldsTemplate" });
var row = $('<ol>').html("<li>row</li>").appendTo(fieldstemplate);

fieldstemplate.insertAfter($("#container"));

var model = { FilterRows: ko.observable(["row"]) };
ko.applyBindings(model);

これにより、次のエラーが発生します。

Uncaught TypeError: Cannot read property 'length' of null knockout-2.2.1.js:8

また、ここで問題の JS フィドルを作成しました: http://jsfiddle.net/roysvork/EcFRc/

基本的に、ここで別のアプローチを取る必要があるのか​​ 、それともテンプレートのノックアウト知識を更新するためにdomを「解析」できる方法があるのか​​ 疑問に思っていますか?

前もって感謝します!

4

1 に答える 1