我在这里有这个视图模型:
var myObsArr = ko.observableArray();
var object1 = {attrA : 'hello', attrB : false};
var object2 = {attrA : 'world', attrB : true};
myObsArr.push(object1, object2);
var vm = {
myObsArr : myObsArr
}
return vm;
我可以通过以下方式获取此observableArray中的任何值:myObsArr()[1].attrB
。
有没有办法我可以设置这些值,例如myObsArr[1].attrB = false
,而不做任何remove
或replace
??
谢谢。
答案 0 :(得分:0)
这是一个小提琴,我发现它有一个有趣的方法,看起来像你想要的那样。
var items = [{
Id: 1,
Text: 'First item'
}, {
Id: 2,
Text: 'Second item'
}];
var observableItems = [
new ItemViewModel(1, "First item"),
new ItemViewModel(2, "Second item")
];
function ItemViewModel(id, text){
var self = this;
self.Id = ko.observable(id);
self.Text = ko.observable(text);
}
var viewModel = function (items) {
var self = this;
self.items = ko.observableArray(items);
self.selectedItemId = ko.observable();
self.item = ko.observable();
self.selectItem = function (item) {
for (var i = 0; i < self.items().length; i++) {
if (self.items()[i].Id() === self.selectedItemId()) {
self.item(self.items()[i]);
break;
}
}
};
};
ko.applyBindings(new viewModel(observableItems));