Knockout.js 是否将项目附加到淘汰数组?
我试图获取一个包含数组(不是observableArray,但可以在需要时更改它)的observableArray,并将相同类型的项附加到数组中,而无需执行foreach并通知订阅方每个新推送的项 在SO和github上,我尝试了一些不同的方法,但我尝试的方法似乎都不管用。我可以毫无问题地替换内容,只需添加我有问题的项即可 小提琴: 我也试过了,但没有用:Knockout.js 是否将项目附加到淘汰数组?,knockout.js,Knockout.js,我试图获取一个包含数组(不是observableArray,但可以在需要时更改它)的observableArray,并将相同类型的项附加到数组中,而无需执行foreach并通知订阅方每个新推送的项 在SO和github上,我尝试了一些不同的方法,但我尝试的方法似乎都不管用。我可以毫无问题地替换内容,只需添加我有问题的项即可 小提琴: 我也试过了,但没有用: self.colors.push.apply(self.colors,self.newColors); 任何帮助都将不胜感激 代码:
self.colors.push.apply(self.colors,self.newColors);
任何帮助都将不胜感激
代码:
var ViewModel = function () {
this.self = this;
self.index = ko.observable(0); // default
self.newColor = ko.observable("purple"); // default
self.newColors = ko.observable([{
color: 'it'
}, {
color: 'is'
}, {
color: 'working'
}]);
self.colors = ko.observable([{
color: 'red'
}, {
color: 'blue'
}, {
color: 'yellow'
}]);
self.addSome = function () {
ko.utils.arrayPushAll(self.colors, self.newColors);
};
self.replace = function () {
self.colors(self.newColors());
};
};
ko.applyBindings(new ViewModel());
1) 您需要展开阵列,对其进行操作,然后将可观测值设置为更改后的阵列:
self.addSome = function () {
self.newColors(ko.utils.arrayPushAll(self.colors(), self.newColors()));
};
2) 除非您的第二行代码输入错误,否则您无意中将self
设置为全局,如果您最终使用嵌套的viewmodels,这将给您带来很多麻烦。1)您需要打开阵列,对其进行操作,然后将可观测值设置为更改的阵列:
self.addSome = function () {
self.newColors(ko.utils.arrayPushAll(self.colors(), self.newColors()));
};
2) 除非您的第二行代码输入错误,否则您无意中将self
设置为全局,如果您最终使用嵌套的viewmodels,这将给您带来很多麻烦。1)您需要打开阵列,对其进行操作,然后将可观测值设置为更改的阵列:
self.addSome = function () {
self.newColors(ko.utils.arrayPushAll(self.colors(), self.newColors()));
};
2) 除非您的第二行代码输入错误,否则您无意中将self
设置为全局,如果您最终使用嵌套的viewmodels,这将给您带来很多麻烦。1)您需要打开阵列,对其进行操作,然后将可观测值设置为更改的阵列:
self.addSome = function () {
self.newColors(ko.utils.arrayPushAll(self.colors(), self.newColors()));
};
2) 除非你的第二行代码是一个输入错误,否则你不小心就把
self
变成了一个全局的,如果你最终使用嵌套的视图模型,这会给你带来很多麻烦。给你……你只需要摆弄你的数组,然后把组合的数组传递给你的观察对象
给你…只需要摆弄你的数组,然后把组合的数组传给你的可观察对象
给你…只需要摆弄你的数组,然后把组合的数组传给你的可观察对象
给你…只需要摆弄你的数组,然后把组合的数组传给你的可观察对象
实际上已经有一个全局的
self
,这就是为什么这个代码可以运行的原因。第2行在viewmodel上设置了一个self
属性,其余属性在全局self
上运行,这意味着所有属性实际上都是全局的。实际上已经有一个全局self
,这就是为什么该代码可以运行的原因。第2行在viewmodel上设置了一个self
属性,其余属性在全局self
上运行,这意味着所有属性实际上都是全局的。实际上已经有一个全局self
,这就是为什么该代码可以运行的原因。第2行在viewmodel上设置了一个self
属性,其余属性在全局self
上运行,这意味着所有属性实际上都是全局的。实际上已经有一个全局self
,这就是为什么该代码可以运行的原因。第2行在viewmodel上设置了一个self
属性,其余属性在全局self
上操作,这意味着所有属性实际上都是全局的。