Jquery 使用knockout js设置单选按钮真实加载时间

Jquery 使用knockout js设置单选按钮真实加载时间,jquery,knockout.js,Jquery,Knockout.js,嗨,请检查我的代码 <dl data-bind="foreach: MobileNos" class="morenumbeList"> <dd><a data-bind="click: $parent.delete" class="minus">-</a><span class="number" data-bind="text: mobileno"></span>

嗨,请检查我的代码

    <dl data-bind="foreach: MobileNos"  class="morenumbeList">
                <dd><a data-bind="click: $parent.delete" class="minus">-</a><span class="number" data-bind="text: mobileno"></span>
                    <input id="itemID"  data-bind="checked: $parent.SelectPrimary,attr : { id : 'Primary_' + $index() + ''} " type="radio" name="primary"/></dd>
            </dl>
我的剧本:

var mobilenoList = function (mobileno, primary) {
    this.mobileno = mobileno;
    this.primary = primary;
};
var MobileSave = function (mobileno, primary) {
    this.mobileno = mobileno;
    this.primary = primary;
}



function AppViewModel() {
    var self = this;
    self.MobileNos = ko.observableArray();
    self.mobileno = ko.observable("");
    self.primary = ko.observable(false);
    self.itemID = ko.observable(0);

    self.SelectPrimary = ko.computed(function () {
        var mobnums = self.MobileNos();

        $.each(self.MobileNos(), function (index, mobile) {
            if (mobnums[index].primary) {
                return true;
            }
            else {
                return false;
            }
        });

    })

    self.MobileNos.subscribe(function () {
        var mobnums = self.MobileNos();
        for (var i = 0, j = mobnums.length; i < j; i++) {
            var MobileNo = mobnums[i];


            if (!MobileNo.index) {
                MobileNo.index = ko.observable(i + 1);
            } else {
                MobileNo.index(i + 1);
            }

        }
    });


    $.getJSON("/User/GetContactDetails/", { UserID: $('#UserId').val() }, function (MobileNos) {
        $.each(MobileNos.rows, function (index, mobnum) {

            self.MobileNos.push(new mobilenoList(mobnum.mobileno, mobnum.primary));
        })
     });
};

  $(document).ready(function () {
    ko.applyBindings(new AppViewModel());
  });
当我加载页面时,它应该是选择单选按钮,在这里我可以在self.MobileNos中获得适当的值,但无法根据该值检查单选按钮

编辑

发件人:

对于单选按钮,KO将设置要检查的元素,如果且仅当 如果参数值等于单选按钮节点的值属性 或checkedValue参数指定的值

因此,您需要:

将单选元素标记更改为include value=true,因为如果为true,则希望将其选中。 更改SelectPrimary函数以返回字符串值true或false。 您也可以在KnockoutJS中检查这个无线电绑定

更新:

将SelectPrimary更改为如下所示:

self.SelectPrimary = ko.computed(function () {
    var mobnums = self.MobileNos();
    var toreturn = mobnums.some(function (item) {
        return item.primary == true;
    });
    return toreturn.toString()
})
这里的问题在于滥用。返回的值仅在匿名函数中。换句话说,retuen值仅用于回调,而不用于SelectPrimary函数。

您能解释一下SelectPrimary逻辑吗?如果有mobnums[索引].primary为true而不是需要设置单选按钮chekedI已更改单选元素标记并更改SelectPrimary函数但仍无法获得响应请检查Post中的编辑为什么将单选值设置为false而非value=true?我已尝试将第一个值设置为true,但未获得正确响应这就是为什么将值设置为false我从中了解到的原因您的问题是,如果您的任何MobileNos数组对象包含具有真值的主对象,则应选择单选按钮。。是这样吗?我如何测试Primary是否被选中,而不是只返回那个值,因为它当前给我最后一个值作为选中值
self.SelectPrimary = ko.computed(function () {
    var mobnums = self.MobileNos();
    var toreturn = mobnums.some(function (item) {
        return item.primary == true;
    });
    return toreturn.toString()
})