一个收音机没有被选择?

问题描述:

我改变了接近,现在,我正确地得到了选定的电台值。一个收音机没有被选择?

问题:我的收音机在初始化时被选中(第一次加载然后用户可以改变选择),但第一次没有选择收音机,如何适当初始化“选择”?

@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

+0

如何在我的情况下初始化“IsSelected”一个收音机被选中,用户可以编辑相同的信息并更新... – user584018

+0

我只是循环浏览'items',直到找到一个带'true'的'selected'和将顶层'selected'设置为'id'。让我知道你是否需要代码。 –