1

初期化時にラジオの 1 つを選択する必要があります (最初のロード後、ユーザーは選択を変更できます) が、最初はラジオが選択されていません。「選択済み」を適切に初期化するにはどうすればよいですか?

ここでラジオ「2」を「選択」として選択する必要がありますが、これは True ですか?

@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);
    });

</script>
4

1 に答える 1

0

selectedオブザーバブルのトップレベルidをの値に設定する必要がありますtrue

何かのようなもの:

$(function() {
    var selected = ko.utils.arrayFirst(viewModel.items, function(item) {
        return item.selected; 
    });

    if (selected) {
       viewModel.selected(selected.id);   
    }

    ko.applyBindings(viewModel);
});

サンプル: http: //jsfiddle.net/rniemeyer/rbsZC/

于 2012-09-04T03:41:52.510 に答える