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

Javascript 使用无线电输入和knockoutjs选择客户地址,javascript,knockout.js,Javascript,Knockout.js,我有一个地址选择屏幕。地址数据来自服务器。数据包括以下值: Id=地址Id 地址=地址本身 TypeCode=1或2(1是发货地址,2是账单地址) IsDefault=布尔值(这是默认地址) 我将这些数据映射到两个数组中。其中一个包含发货地址,另一个包含账单地址 我有几个问题 当服务器数据出现时,我无法设置默认地址 当我想设置一个新地址时,我单击另一个单选按钮。当我这样做时,我在“selectedShippingAddress”循环中给出了两个地址id。我认为这样做是不对的 以下是一个例子:

我有一个地址选择屏幕。地址数据来自服务器。数据包括以下值:

  • Id
    =地址Id
  • 地址
    =地址本身
  • TypeCode
    =1或2(1是发货地址,2是账单地址)
  • IsDefault
    =布尔值(这是默认地址)
我将这些数据映射到两个数组中。其中一个包含发货地址,另一个包含账单地址

我有几个问题

  • 当服务器数据出现时,我无法设置默认地址
  • 当我想设置一个新地址时,我单击另一个单选按钮。当我这样做时,我在“
    selectedShippingAddress
    ”循环中给出了两个地址id。我认为这样做是不对的
  • 以下是一个例子:


    谢谢。

    您使用的
    已检查
    绑定方式错误。它不指向应该选择的对象的属性,而是指向具有所选对象ID的可观察对象。i、 e.:
    选中:$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);
        }
      }
    });
    
    工作样本: