【问题标题】:Knockout js how to find a checked radio button in a radio button listKnockout js如何在单选按钮列表中找到选中的单选按钮
【发布时间】:2013-12-04 19:28:10
【问题描述】:

我有一个联系方式列表。用户可以选择、添加和删除这些联系人详细信息。(请参阅小提琴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);

             }
         }

请查看小提琴中的其余代码

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

当用户更改选择列表时,具有ContactKey、Ref和ContactName属性的选中项对象会根据其他observable被更新。

但如果选择单选按钮,则只会更新主要联系人。我已经使用纯 jquery 实现了这一点。但是值单选按钮值绑定对我来说有点混乱。谁能帮我解决这个问题。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    如果有什么与您的意图不同的地方,请告诉我。

    问候。

    【讨论】:

    • 感谢您的帮助。我正在努力完成它。它很有魅力。有一个问题,如果我想在用户查看页面时显示已选择的联系人。当我传递一个参数 ContactModel.Items.push(ContactModel.ContactData[1]) 时,它会抛出一个未定义的错误。你能看看吗
    • 嗨,那是因为您正在添加原始数据并且“Items”可观察数组需要一个“Contact”对象,解决方案是改为调用:ContactModel.Items.push(new Contact(ContactModel .ContactData[1]))
    • 是的,你是对的,请查看更新的小提琴。现在的问题是当我再次单击添加按钮时,主要联系人多次突出显示jsfiddle.net/QmQy9/7
    • 它是使用联系人键来确定选择的那个,我将比较更改为使用对象,jsfiddle.net/QmQy9/10。
    猜你喜欢
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-21
    • 2015-04-26
    • 1970-01-01
    • 2012-04-25
    相关资源
    最近更新 更多