5

我正在使用 knockout.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 函数仅在敲除应用绑定并且任何引用的 observables 发生更改时才被调用。

您的更新函数不引用任何可观察对象,因此在初始调用之后不会再次被调用。

如果你希望你的函数在你点击它时被调用,你应该使用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 回答