Knockout js如何在单选按钮列表中找到已检查的单选按钮

时间:2013-12-04 19:28:10

标签: data-binding knockout.js radio-button radiobuttonlist

我有一份联系方式清单。用户可以选择,添加和删除这些联系人详细信息。(请参阅小提琴JSfiddle)每当用户单击添加按钮时,新的联系人模型项将添加到DOM。

var ContactModel = {

           ContactData : [
                               { 'ContactKey': 12323, 'Ref': 'Reference-Marsh', 'ContactName': 'Marsh Global' },
                               { 'ContactKey': 44234, 'Ref': 'Reference-AON', 'ContactName': 'AON Co' },
                               { 'ContactKey': 65343, 'Ref': 'Reference-Europ', 'ContactName': 'Europ Ltd' },
                               { 'ContactKey': 78555, 'Ref': 'Reference-ECB', 'ContactName': 'ECB Tradings' },
                               { 'ContactKey': 24242, 'Ref': 'Reference-Jersey', 'ContactName': 'New Jersey Inc' }
           ],

             Items: ko.observableArray(),

             MainContacts : ko.observable(),

             AddItem: function () {
                 ContactModel.Items.push(new Contact([]));
             },
             Remove: function (line) {
                 ContactModel.Items.remove(line);

             }
         }

请参阅小提琴中的其余代码

enter image description here

当用户点击单选按钮时,选中的单选按钮行数据被视为主要联系人。我必须保存所有行项目数据。这是因为当用户重新访问该页面时,我将带有所选主要联系人的所有订单项。

当用户更改选择列表时,具有ContactKey,Ref和ContactName属性的所选项目对象将根据其他可观察项进行更新。

但如果选择了单选按钮,则只会更新主要联系人。我使用纯jquery实现了这一点。但值单选按钮值绑定位对我来说很困惑。任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:3)

如果我理解你的意图是正确的,那么我对小提琴的修改应该为你提供一个解决方案,基本上:

  • 我给单选按钮命名,以便它们是独占的。
  • 我将逻辑从视图移动到现在是计算的ischecked observable。
  • 我更改了主要联系人的绑定逻辑。
  • 可以在小提琴中看到一些小小的微调。

这是小提琴:http://jsfiddle.net/QmQy9/4/

如果有什么不同于你的意图,请告诉我。

问候。