2

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

  • Id= 地址 ID,
  • Address= 地址本身,
  • TypeCode= 1 或 2(1 是送货地址,2 是帐单地址),
  • IsDefault= 布尔值(这是默认地址)

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

我有几个问题。

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

这是示例:http: //jsfiddle.net/sevilyilmaz/HnGS4/

谢谢。

4

1 回答 1

0

您正在使用checked错误的绑定方式。它不指向应选择的对象的属性,它指向具有选定对象ID的可观察对象。即: checked: $parent.selectedShippingAddresselectedShippingAddres = 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);
    }
  }
});

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

于 2013-07-27T20:25:14.030 回答