Knockout.js 敲除复合物结合
请看一下我的护照 我可以添加多个电话,没有问题,并删除他们,但当我添加多个地址,它不起作用。我只能添加一个地址Knockout.js 敲除复合物结合,knockout.js,knockout-2.0,Knockout.js,Knockout 2.0,请看一下我的护照 我可以添加多个电话,没有问题,并删除他们,但当我添加多个地址,它不起作用。我只能添加一个地址 var user = { id: 1 }; var UserModel = function(data) { var self = this; self.phones = ko.observableArray([]); self.addresses = ko.observableArray([]); self.addPhone = func
var user = { id: 1 };
var UserModel = function(data) {
var self = this;
self.phones = ko.observableArray([]);
self.addresses = ko.observableArray([]);
self.addPhone = function(phone) {
self.phones.push({
type: phone.type,
number: phone.number
});
};
self.removePhone = function(phone) {
self.phones.remove(phone);
};
self.addAddress = function() {
self.addresses({
line_1: "",
line_2: "",
town: "",
postcode: "",
country: ""
});
};
self.removeAddress = function(address) {
self.addresses.remove(address);
};
self.save = function() {
//alert(JSON.stringify(ko.toJS(self), null, 2));
self.lastSavedJson(JSON.stringify(ko.toJS(self), null, 2));
};
self.lastSavedJson = ko.observable("")
};
ko.applyBindings(new UserModel(user));
以下是最新的小提琴: 在您发布的小提琴链接中,
delivery\u address
是一个可观察的
,而不是可观察的数组
,您要添加和删除的代码没有将地址传递给函数
我不是100%确定这会解决您的问题,但它使地址的工作方式与您的电话号码的工作方式相同。您需要调用地址数组上的push以向其中添加多个项目 更新的示例代码如下所示:
var user = { id: 1 };
var UserModel = function(data) {
var self = this;
self.phones = ko.observableArray([]);
self.addresses = ko.observableArray([]);
self.addPhone = function(phone) {
self.phones.push({
type: phone.type,
number: phone.number
});
};
self.removePhone = function(phone) {
self.phones.remove(phone);
};
self.addAddress = function() {
self.addresses.push({
line_1: "",
line_2: "",
town: "",
postcode: "",
country: ""
});
};
self.removeAddress = function(address) {
self.addresses.remove(address);
};
self.save = function() {
//alert(JSON.stringify(ko.toJS(self), null, 2));
self.lastSavedJson(JSON.stringify(ko.toJS(self), null, 2));
};
self.lastSavedJson = ko.observable("")
};
ko.applyBindings(new UserModel(user));