在Knockout foreach中创建自定义绑定

时间:2012-05-08 14:55:59

标签: binding foreach knockout.js ko.observablearray

我无法理解我错在哪里。你可以帮帮我吗? 我创建了一个名为'bTest1'的自定义绑定,两个可观察的数据(1个数组和1个字符串)。 在字符串上应用此绑定可以正常工作,但不能通过ko:foreach

在数组上

这是我的jsfiddle链接:Here

和我的代码

<!-- ko foreach:test -->
<label><input type="text" data-bind="bTest1:$root.test1,value:$data,valueUpdate:'afterkeydown'" />Test1</label><br/>
<!-- /ko -->
<br/>
<label><input type="text" data-bind="bTest1:test1,value:test1,valueUpdate:'afterkeydown'" />Test2</label>

和我的JS代码(尽可能简单):

ko.bindingHandlers.bTest1 = {
        init: function() {
            console.log('init Test1');
    },
    update: function() {
            console.log('update Test1');
    }
};


var modelView = function(){
    var self = this;
    self.test = ko.observableArray(['foreach_test','foreach_test1']);
    self.test1 = ko.observable('test_alone');
}

ko.applyBindings(new modelView());

我感谢你帮助我。 最好的祝福 S上。

1 个答案:

答案 0 :(得分:1)

早上好。

ObservableArray仅跟踪对数组本身的更改(添加/删除项目),而不是更改它包含的项目。因此,如果您想要相同的结果,则需要将数组中的每个项目标记为ko.observable。

希望这有帮助!