使用无线电输入和knockoutjs选择客户地址

Selecting customer addresses with radio inputs and knockoutjs

本文关键字:选择 客户 地址 knockoutjs 无线电 输入      更新时间:2023-09-26

我有一个地址选择屏幕。地址数据来自服务器。数据涵盖这些值:

  • CCD_ 1=地址Id
  • CCD_ 2=地址本身
  • TypeCode=1或2(1是发货地址、2是计费地址)
  • IsDefault=布尔值(这是默认地址)

我将这些数据映射到两个数组中。其中一个包含发货地址,另一个包含账单地址。

我有几个问题。

  1. 当服务器数据到来时,我无法设置默认地址
  2. 当我想设置一个新地址时,我会单击另一个单选按钮。当我这样做的时候,我在"selectedShippingAddress"循环中给出了两个地址id。我认为这不是正确的做法

以下是示例:http://jsfiddle.net/sevilyilmaz/HnGS4/

谢谢。

您使用checked绑定的方式错误。它不指向应该选择的对象的属性,而是指向具有所选对象ID的可观察对象。即CCD_ 7和CCD_。现在,当您在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);
    }
  }
});

工作样品:http://jsfiddle.net/HnGS4/4/