物品细节是含有包含常规性质,不可观测量常规对象的可观察数组。您已经创建了“pm.itemDetail”构造函数,那么为什么不使用它呢?
pm.Item = function(name, itemDetails) {
// ...
var details = [];
for (var i = 0; i < itemDetails.length; i++) {
details.push(new pm.ItemDetail(itemDetails[i]));
}
self.itemDetails = ko.observableArray(details);
};
我已经更新了pm.ItemDetail起作用的位:
pm.ItemDetail = function(data) {
var self = this;
self.name = ko.observable(data.name);
self.type = ko.observable(data.type);
self.subtype = ko.observable(data.subtype);
};
现在,您可以使用“看得见的”结合(“如果”绑定隐藏了DOM的内容节点,而不是节点本身):
data-bind="visible: type() == 1, ..."
要添加新的项目细节,只是创建的“pm.ItemDetail”实例,并将其推到它emDetails阵列当前选择的项目:
addItemDetail = function(item) {
selectedItem().itemDetails.push(new pm.ItemDetail({
name: "Please enter a name",
type: 1,
subtype: 1
}));
};
http://jsfiddle.net/XscRT/6/
希望我有足够的声誉下降投票。在得到答案后,删除小提琴会有点粗鲁。没有人可以看到可能从所提供的答案中学习的细节。 – 2012-09-20 15:08:20
您不应该删除作为问题一部分的小提琴。你的问题现在不完整,没有提供有价值的背景。 – rlcrews 2013-10-29 17:54:16