0

リストをレンダリングするために JsViews を使用していますが、最初に次のようにヘルパー関数を介してリストを渡します。

<ul>
  {^{for ~filter(list, 'xyz')}}
    <li>...</li>
  {{/for}}
</ul>

Whereは、フィルタリング基準に基づいて元の要素の一部のみを使用filterして新しいリストを作成します。list問題は、更新するときですlist

$.observable(data.list).insert(list.length, { ... });

{^{for ...}}再評価されません。ただし、フィルターを削除すると、次のように変更{^{for ...}されます。

{^{for list}}
  ...
{{/for}}

その後、すべてが期待どおりに機能します。私が求めているものを達成する方法はありますか?この答えは十分に似ているため、JsViewsは私が望むことを実行できるはずです: JsViews: Converter before helper function in data-link

4

2 に答える 2

0

わかりましたので、これに対する回避策を見つけましたが、@BorisMoore にこれについて検討してもらいたいと思います!

解決策は、ビューを手動で更新することです。フィルター処理されたデータはバインドされたデータではないため===です (私は推測します)。だから代わりに:

$.observable(data.list).insert(data.list.length, item);

私は次のように変更しました:

data.list.push({...});
$.view('#target', true, 'data').refresh();

レンダリングされたコンテンツを保持する#targetターゲットのセレクターはどこにありますか。<div>

繰り返しますが、@BorisMoore がこれに加担できれば本当にうれしいです。このソリューションは、アイテムを段階的に追加するのではなく、ビューのチャンクを更新するからです (私が理解していることから)。

于 2013-06-04T15:36:45.097 に答える