knockout.js - knockout 嵌套的 observableArray 不绑定(bind)

标签 knockout.js

我已经查看了一些关于类似问题的相关搜索,但无论我尝试与工作结果有多接近,我似乎都无法弄清楚以下代码出了什么问题。

<div data-bind="foreach: collections" >
    <div data-bind="text:name,click: $data.AddToCollectionB">
        <div data-bind="foreach: collectionB" >
        <input type="text" data-bind="value: name">
        </div>                   
    </div>
</div>

var kt = kt || {};

kt.itemA= function(n) {
    var self = this;
    self.name = n.name;
    self.collectionB = ko.observableArray(n.colB);

    self.AddToCollectionB = function () {
    self.collectionB.push(kt.itemB({ name: 'test-nested sub item' }));
    alert(self.name);
    alert(self.collectionB().length);
    };
};

kt.itemB= function(n) {
    var self = this;
    self.name = ko.observable(n.name);
};

kt.vm= new (function() {
    var self = this;
    self.collections= ko.observableArray([new kt.itemA({name:'item 1', colB: [new kt.itemB({name:'sub-item'})]}),new kt.itemA({name:'item 2', colB: []})]);
});

ko.applyBindings(kt.vm);

有人可以指出我做错了什么吗?

jsFiddle链接:http://jsfiddle.net/L7uxh/31/

谢谢

最佳答案

当您的主 div 上有 text: name 时,它会破坏其中的内容。

您需要执行一些操作,例如将 name 放入 div 内的 span 中,例如:http://jsfiddle.net/rniemeyer/L7uxh/44/

关于knockout.js - knockout 嵌套的 observableArray 不绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10741962/

相关文章:

knockout.js - afterRender 是否适用于 Knockout 组件?

javascript - 显示模块模式 (RMP) 的缺点

javascript - 没有可观察的 knockout 订阅/事件类型系统?

javascript - 是否有使用扩展器的 knockout.js 的屏蔽输入插件?

javascript - 使用默认的 JavaScriptSerializer 将 DateTime 绑定(bind)到挖空 View 模型

javascript - 如何在 Knockout.js 中模型和 View 之间转换数据?

javascript - Knockout JS 绑定(bind)计算可观察值不起作用

javascript - 将值传递给具有 knockout 功能的函数

javascript - 如何连接文本绑定(bind)中使用的可观察值的值?

javascript - Knockoutjs单选按钮无法选择默认选中