0

ノックアウト.jsを始めたばかりです。私はforeachこのようなバインディングを持っていますが、これは正常に動作します:

<ul data-bind="foreach: people">
   <li> .... </li>
</ul>

peopleに渡すモデルの一部ですko.applyBindings。ドキュメントによると、以下も機能するはずです。

<ul data-bind="foreach: {data: people}"> 

しかし、そうではありません。リストは空のままですが、ブラウザのエラー ウィンドウにエラーは表示されません。私が間違っているかもしれないヒントはありますか?私が見ていない両方の呼び出しに微妙な違いはありますか?

私の考えは、 to のハンドラーを渡すafterAddことforeachです。したがって、それを呼び出すには2番目の方法が必要です。

4

2 に答える 2

0

記録のために:解決策は少し奇妙で、問題の原因は私のコードの別のエラーでした。peopleを介して初期化されko.observableArrayます。サーバーから新しいデータを取得したとき、次のようにモデルを更新しました。

model.people(ko.observableArray(newData));

これが正しい方法であることがわかりました。

model.people(newData);

何らかの理由で、最初のバージョンは特定のテンプレートバインディング仕様で引き続き機能しますが、すべてでは機能しません。2つ目は、どのような場合でも正常に機能します。

于 2012-05-23T09:42:07.153 に答える
0

あなたは実際にテンプレートバインディングを探していると思います。Foreach はそのショートカットですが、afterAdd が必要な場合は、フル バインディングを使用できます。

<ul data-bind='template: { foreach: people,
                        afterAdd: myPostProcessingLogic }'> </ul>
于 2012-05-21T20:13:10.973 に答える