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()
})