将一个可观察数组存储在变量中,并替换它的内容

Storing an observable array in variable and replacing it's content

本文关键字:变量 替换 存储 一个 数组 观察      更新时间:2023-09-26

如何通过将其存储在另一个变量中来替换可观察数组的内容,例如:

我有一个可观察数组:var list = self.StateList();

我想这样做:

var cities = self.CityList();
//console.log(cities);
 var oldLocation = ko.utils.arrayFirst(cities, function (item) {
     return item.CityId == args.CityId;
 });
 cities.replace(oldLocation, args);

但是显示错误城市没有方法replace

更新我尝试了这个答案,它有一些帮助我我使用可观察切片方法,它有一些帮助:

   var cities = self.CityList();
   var observble = ko.observable();
   observble(cities.slice(0));

所以我的所有城市observable将被复制到一个全新的observable

现在我可以做任何我想要的,因为它是我的城市相同的可观察数组。有人可能会想为什么要把可观察数组转换成变量然后再把它转换成可观察数组。我需要把我的可观察数组发送给一个函数。如果有其他更好的解决方案,请贴在这里。

请尝试一下

// The observable array
this.CityList = ko.observableArray([{CityId :1 }, {CityId :2 } ,{CityId :3 }]);
// observable array stored in variable. The brackets should not be used if you 
// want to treat the cities variable as an observable array
 var cities = this.CityList;
 // Find a city with id 1.
 var oldLocation = ko.utils.arrayFirst(cities(), function (item) {
     return item.CityId == 1;
 });
console.log(oldLocation);
// Replace the city with id 5
cities.replace(oldLocation , {CityId :5 });
// The values in both arrays will get modified
console.log(cities()[0]);
console.log(this.CityList()[0]);