我有一个淘汰模型
self.newItem = ko.observable({
manufacturer: ko.observable(),
itemnumber: ko.observable(),
itemDescription: ko.observable(),
priceclass: ko.observable()
});
我有另一个具有相同属性但只有itemnumber可观察的。
self.newItemToInsert = ko.observable({
manufacturer: "",
itemnumber: ko.observable(),
itemDescription: "",
priceclass: ""
});
我有另一个可观察的数组来存储项目
self.AllItems = ko.observableArray();
现在我的问题是如何将newitem复制到newItemToInsert observable,这样我就可以将它保存到AllItems数组中,并且可以为数组中的不同行观察itemnumber。因此,如果我添加10个项目,我希望能够跟踪10个项目编号属性中每个项目的数据更改。
由于
答案 0 :(得分:1)
如果我正确地提出了您的问题,您可以为项目和每个项目创建单独的视图模型,以创建该模型的new
实例。然后在项目视图模型中,为所需的任何变量定义observable
。
示例:https://jsfiddle.net/9aLvd3uw/222/
的 VM:强>
var MainViewModel = function () {
var _self = this;
var i = 1;
_self.Items = ko.observableArray([]);
//Fake Data
_self.Items.push(new ItemViewModel({ "manufacturer": "Co.0", "itemnumber": 123 ,"itemDescription": "Desc 0" , "priceclass" : "Class 0"}));
//Add a new item with fake data
self.ClickMe = function (){
_self.Items.push(new ItemViewModel({ "manufacturer": "Co."+i, "itemnumber": 123 + i ,"itemDescription": "Desc" +i , "priceclass" : "Class "+i}));
i++;
}
}
var ItemViewModel = function (data) {
var _self = this;
_self.manufacturer = data.manufacturer;
_self.itemnumber = ko.observable(data.itemnumber);
_self.itemDescription = data.itemDescription;
_self.priceclass = data.priceclass;
}
ko.applyBindings(MainViewModel);