如何调用knockout自定义绑定更新函数

时间:2012-11-05 04:22:58

标签: javascript jquery knockout.js

我正在使用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功能不是呼叫。每当我点击删除链接时,我想调用自定义绑定的更新功能。我在这里做错了什么?

2 个答案:

答案 0 :(得分:5)

只有当knockout应用绑定并且任何引用的observable都被更改时,才会最初调用update函数。

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

如果您希望在单击时调用函数,则应使用click绑定。

答案 1 :(得分:0)

您必须在单击“删除”时调用函数,然后在该函数中再次应用绑定。你的问题将得到解决。因为第一次加载时有绑定值,而不是删除点击。

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

<script type=javascript>
    function delete(){ ko.applyBindings(ko.bindingHandlers.custom);}
</script>