javascript - 使用 radio 输入和 knockoutjs 选择客户地址

标签 javascript knockout.js

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

  • Id = 地址 ID,
  • 地址 = 地址本身,
  • TypeCode = 1 或 2(1 是送货地址,2 是账单地址),
  • IsDefault = boolean(这是默认地址)

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

我有几个问题。

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

示例如下:http://jsfiddle.net/sevilyilmaz/HnGS4/

谢谢。

最佳答案

您正在以错误的方式使用 checked 绑定(bind)。它不指向应选择的对象的属性,它指向具有所选对象 ID 的可观察对象。即:选中:$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/

关于javascript - 使用 radio 输入和 knockoutjs 选择客户地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17901166/

相关文章:

javascript - 随着时间的推移,Ajax 繁重的 JS 应用程序使用过多的内存

javascript - 如何在Alfresco中通过Activiti工作流javascript获取bpm_outcome

javascript - 如何将 firebase 身份验证 token 发送到外部服务器?

knockout.js - knockout : issue with option tags and visibility

javascript - 订阅事件没有每次都被调用

javascript - 添加到数组/集合后的 KnockoutJS 设置焦点

javascript - 当没有链接时用javascript隐藏div

javascript - 如何从父窗口在子窗口上启用tinymce

css - 网格显示不正确

javascript - 使用 ko.computed 和 if 语句来设置对象的可观察属性