使用以下代码,我希望我的更新函数在每次更新 viewModel.item 可观察对象时执行。我可以看到我的 init 和 update 函数按预期在页面加载时触发,但在单击更新可观察值的按钮时却看不到。
标记:
<button id='addButton'>item++</button>
<br/>
<span>viewModel.item = </span>
<span data-bind='text: $data.item(), bind: viewModel.item'></span>
脚本:
$(document).ready(function() {
$('#addButton').click(function() {
viewModel.item(viewModel.item() + 1);
});
var viewModel = {
item: ko.observable(1)
};
ko.bindingHandlers.bind = {
init: function(element, valueAccessor) {
alert('init');
},
update: function(element, valueAccessor) {
alert('update');
}
};
ko.applyBindings(viewModel);
});
我浏览了一些类似的问题,但没有找到可比较的例子。我创建了一个 JSFiddle here .
最佳答案
只要 它访问的可观察对象 更新,绑定(bind)处理程序的 update
函数就会运行。您的函数不访问任何可观察对象。
这是一个可以使用的更新版本:
ko.bindingHandlers.bind = {
init: function(element, valueAccessor) {
alert('init');
},
update: function(element, valueAccessor) {
ko.unwrap(valueAccessor());
alert('update');
}
};
关于javascript - knockout 自定义绑定(bind)更新未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23878702/