5

ノックアウト.jsを使用しています。カスタム バインディングを作成し、次のようにアンカー タグに適用しました。

<a data-bind="custom : { param1 : 'text', param2: 'text' }">delete</a>

ko.bindingHandlers.custom = {
   init: function (element, valueAccessor, allBindingsAccessor) {
      alert("init");
   },
   update: function (element, valueAccessor, allBindingsAccessor) {
      alert("update");
   }
}

最初にページをロードすると、initupdate関数の両方が呼び出されます。しかし、リンクの削除update機能をクリックしても呼び出されません。削除リンクをクリックするたびに、カスタム バインディングの更新機能を呼び出したいと考えています。ここで何が間違っていますか?

4

2 に答える 2

5

update 関数は、ノックアウトがバインディングを適用するとき、および参照されたオブザーバブルが変更された場合にのみ、最初に呼び出されます。

更新関数はオブザーバブルを参照しないため、最初の呼び出しを超えて再度呼び出されることはありません。

クリックしたときに関数が呼び出されるようにする場合は、click代わりにバインディングを使用する必要があります。

于 2012-11-05T04:35:02.170 に答える
0

「削除」をクリックして関数を呼び出し、その関数でバインディングを再度適用する必要があります。あなたの問題は解決されます。削除クリックではなく、最初にロードしたときにバインド値があるためです。

<a data-bind="custom : { param1 : 'text', param2: 'text' }" 
   onclick='delete()'>delete</a>

<script type=javascript>
    function delete(){ ko.applyBindings(ko.bindingHandlers.custom);}
</script>
于 2013-03-08T05:34:47.620 に答える