javascript - knockout 选择标签值神秘主义

标签 javascript knockout.js knockout-2.0

如果它是表示相等选项文本的文本,则 Knockout 不会创建值属性。所以选择的值神秘地转换为字符串类型:

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

test it in jsFiddle

我该如何解决这个问题?

最佳答案

options binding将保留您的类型。例如:

<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

关于javascript - knockout 选择标签值神秘主义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16833375/

相关文章:

Javascript fn 在调用时有 2 个参数,但在声明时只有 1 个参数?

jQuery onClick 在 KnockoutJS 绑定(bind)的 div 中工作

javascript - Knockoutjs 设置当前项目

javascript - 括号中缺少 )

JavaScript 过滤器函数 : filter on multiple conditions (either could be true)

javascript - Bootstrap DatePicker 允许通过键入进行编辑

javascript - knockout .js : ObservableArray with ObservableArrays inside?

knockout.js - knockout : Array Binding Not Working

javascript - 敲除点击绑定(bind)里面的单选按钮

asp.net - 当页面验证失败时,如何禁用我的 ASP.NET AJAX ConfirmButtonExtender?