Knockout.js 从ObservalArray中删除对象
我在移除可观察阵列中的对象时遇到问题。我有一个Knockout.js 从ObservalArray中删除对象,knockout.js,Knockout.js,我在移除可观察阵列中的对象时遇到问题。我有一个removietemfromqueue函数,可以从队列中删除所选对象 显示如果向队列中添加一组项目,然后删除一个,则会删除所有项目: 项目: 队列: 通过 从页面中删除 添加到队列 通过 从队列中删除 这是Javascript: function Item(title, description) { this.title = ko.observable(title); this.description = ko.obse
removietemfromqueue
函数,可以从队列中删除所选对象
显示如果向队列中添加一组项目,然后删除一个,则会删除所有项目:
项目:
队列:
通过
从页面中删除
添加到队列
通过
从队列中删除
这是Javascript:
function Item(title, description) {
this.title = ko.observable(title);
this.description = ko.observable(description);
}
var viewModel = {
items: ko.observableArray([
new Item("one", "one description")
]),
queue: ko.observableArray([]),
addItemToQueue: function (item) {
this.queue.push(item);
},
removeItemFromPage: function (item) {
this.items.remove(item);
},
removeItemFromQueue: function (item) {
this.queue.remove(item);
}
};
ko.applyBindings(viewModel);
function Item(title, description) {
this.title = ko.observable(title);
this.description = ko.observable(description);
}
var viewModel = {
items: ko.observableArray([
new Item("one", "one description")
]),
queue: ko.observableArray([]),
addItemToQueue: function (item) {
this.queue.push(ko.toJS(item));
},
removeItemFromPage: function (item) {
this.items.remove(item);
},
removeItemFromQueue: function (item) {
this.queue.remove(item);
}
};
ko.applyBindings(viewModel);
我在addItemToQueue
函数中发现使用ko.toJS(item)
:
项目:
队列:
通过
从页面中删除
添加到队列
通过
从队列中删除
这个Javascript:
function Item(title, description) {
this.title = ko.observable(title);
this.description = ko.observable(description);
}
var viewModel = {
items: ko.observableArray([
new Item("one", "one description")
]),
queue: ko.observableArray([]),
addItemToQueue: function (item) {
this.queue.push(item);
},
removeItemFromPage: function (item) {
this.items.remove(item);
},
removeItemFromQueue: function (item) {
this.queue.remove(item);
}
};
ko.applyBindings(viewModel);
function Item(title, description) {
this.title = ko.observable(title);
this.description = ko.observable(description);
}
var viewModel = {
items: ko.observableArray([
new Item("one", "one description")
]),
queue: ko.observableArray([]),
addItemToQueue: function (item) {
this.queue.push(ko.toJS(item));
},
removeItemFromPage: function (item) {
this.items.remove(item);
},
removeItemFromQueue: function (item) {
this.queue.remove(item);
}
};
ko.applyBindings(viewModel);
有更简单的方法吗
此外,这里的购物车示例似乎使用了与我的第一个示例类似的代码,但在删除项目时不会遇到相同的问题。我有点困惑。您遇到的问题是,您多次将同一项添加到队列数组中 observableArray的
remove
功能将删除传递给它的项目的所有副本
toJS是获取数据的干净副本的一种方法。然而,如果你需要的话,你会失去任何可观察的东西
否则,您可能需要执行以下操作:
this.queue.push(新项目(Item.title(),Item.description())
或编写一个函数,帮助您复制项目(传入项目并返回新项目)。以下是购物车示例: