javascript - knockout 自定义绑定(bind)更新未触发

标签 javascript jquery knockout.js custom-binding

使用以下代码,我希望我的更新函数在每次更新 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');
    } 
};        

http://jsfiddle.net/vMD74/14/

关于javascript - knockout 自定义绑定(bind)更新未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23878702/

相关文章:

javascript - 社交分享按钮呈现不正确

javascript - TinyMce 允许所有 Html 标签

javascript - 将 javascript 事件添加到 jqGrid

javascript - 在 jQuery 中的链式事件处理程序之间传递局部变量

javascript - 如何使用knockout检查输入框值是否已更改

javascript - 将 dom 节点传递到 Knockout 组件中(使用 RequireJS 时)

javascript - Javascript 中的更新操作

javascript - 创建具有相同样式但内容不同的多个模态窗口?

javascript - 如何在点击处理程序上检查键盘修饰符,如 "shift"?

javascript - 根据用户选择 knockout 更改数据绑定(bind)