一个收音机没有被选择?
问题描述:
我改变了接近,现在,我正确地得到了选定的电台值。一个收音机没有被选择?
问题:我的收音机在初始化时被选中(第一次加载然后用户可以改变选择),但第一次没有选择收音机,如何适当初始化“选择”?
@model Demo.Web.ViewModels.HomeViewModel
@{
ViewBag.Title = "Two Page";
}
@using (Html.BeginForm("Index", "Two", FormMethod.Post, new Dictionary<string, object> { { "data-bind", "submit:onSubmit" } }))
{
<table>
<tr>
<td>
<div data-bind="foreach: items">
<input type="radio" name="items" data-bind="attr: { value: id }, checked: $root.selected" />
<span data-bind="text: name"></span>
</div>
<div data-bind="text: selected">
</div>
</td>
</tr>
</table>
<input type="submit" name="send" value="Send" />
}
<script type="text/javascript">
var viewModel = {
items: [
{ "id": 1, "name": "one", "selected": false },
{ "id": 2, "name": "two", "selected": true },
{ "id": 3, "name": "three", "selected": false }
],
selected: ko.observable(),
onSubmit: function(){
var x = this.selected();
}
};
$(function() {
ko.applyBindings(viewModel);
});
答
当针对radio
类型的输入限制,在checked
淘汰赛结合尝试写入任何值与所结合的输入的值。这个想法是,你所有的无线电都受到相同的可观察性的约束。
喜欢的东西:
var viewModel = {
items: [
{ id: 1, name: "one" },
{ id: 2, name: "two" },
{ id: 3, name: "three" }
],
selected: ko.observable()
};
界对像UI:
<div data-bind="foreach: items">
<input type="radio" name="items" data-bind="attr: { value: id }, checked: $root.selected" />
<span data-bind="text: name"></span>
</div>
<div data-bind="text: selected"></div>
样品:http://jsfiddle.net/rniemeyer/BbX4S/
所以,你的情况,你应该能结合您的无线电对抗$root.IsSelected
并使用它而不是循环遍历项目。
初始化它时,可能需要查看是否有任何按钮被选中,然后适当填充根级IsSelected
。
如何在我的情况下初始化“IsSelected”一个收音机被选中,用户可以编辑相同的信息并更新... – user584018
我只是循环浏览'items',直到找到一个带'true'的'selected'和将顶层'selected'设置为'id'。让我知道你是否需要代码。 –