我正在使用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");
}
}
当我第一次加载页面时,调用了init
和update
函数。但是,当我点击删除链接update
功能不是呼叫。每当我点击删除链接时,我想调用自定义绑定的更新功能。我在这里做错了什么?
答案 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>