我有一个地址选择屏幕。地址数据来自服务器。数据涵盖这些值:
Id
= 地址 ID,地址
= 地址本身,TypeCode
= 1 或 2(1 是送货地址,2 是账单地址),IsDefault
= boolean(这是默认地址)
我将这些数据映射到两个数组中。其中一个包含送货地址,另一个包含帐单地址。
我有几个问题。
- 当服务器数据到来时,我无法设置默认地址。
- 当我想设置一个新地址时,我单击另一个单选按钮。当我这样做时,我在“
selectedShippingAddress
”循环中给出了两个地址 ID。我认为这不是正确的方法。
示例如下:http://jsfiddle.net/sevilyilmaz/HnGS4/
谢谢。
最佳答案
您正在以错误的方式使用 checked
绑定(bind)。它不指向应选择的对象的属性,它指向具有所选对象 ID 的可观察对象。即:选中:$parent.selectedShippingAddres
和 selectedShippingAddres = ko.observable();
。现在,当您在 updateAddresses
中填充数据时,您可以检查并保存默认 ID:
$.map(data.AddressListItems, function (v) {
if (v.TypeCode === 1) {
viewModel.shippingAddresses.push(v);
if (v.IsDefault) {
viewModel.selectedShippingAddress(v.Id);
}
} else {
viewModel.billingAddresses.push(v);
if (v.IsDefault) {
viewModel.selectedBillingAddress(v.Id);
}
}
});
关于javascript - 使用 radio 输入和 knockoutjs 选择客户地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17901166/