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

时间:2013-07-27 18:39:36

标签: javascript knockout.js

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

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

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

我有几个问题。

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

    感谢。

1 个答案:

答案 0 :(得分: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/