1

ノックアウトは、同等のオプション テキストを表すテキストの場合、値属性を作成しません。したがって、選択された値は神秘的に文字列型に変換されます。

<select data-bind="foreach: opts, value: val">
    <option data-bind="text: name, value: id"></option>
</select>

var vm = {
    opts: [{id: 1, name: 'a'}, {id: 2, name: '2'}],
    val: ko.observable(1)
};
vm.val.subscribe(function (x) {
    console.log(x, typeof x);
});
ko.applyBindings(vm);

jsFiddle でテストする

この動作を修正するにはどうすればよいですか?

4

1 に答える 1

2

オプション バインディングは、型を保持します。例えば:

<select data-bind="value: val, options: opts, optionsText: 'name', optionsValue: 'id'"></select>

<script src="knockout.js"></script>
<script>
var vm = {
    opts: [{id: 1, name: 'a'}, {id: 2, name: '2'}],
    val: ko.observable(1)
};
vm.val.subscribe(function (x) {
    console.log(x, typeof x);
});
ko.applyBindings(vm);
</script>

出力:

2 number
1 number
于 2013-05-30T11:11:36.370 に答える