javascript - Knockout.js bool 选择列表选项

标签 javascript jquery knockout.js

我正在尝试创建一个使用 Knockout 进行绑定(bind)的下拉列表。下拉列表只有两个选项,但是,我要求选项的值是 true 和 false。

查看

@model WebApplication13.Models.IndexViewModel

@{
    ViewBag.Title = "Index";
}
<select data-bind="options: userOptions, value: userStatus, event: { change: selectionChanged }"></select>

@section Script {
    <script src="~/Scripts/scripts.js"></script>
    <script>

        var options = {
            userStatus: @(Model.IsNewUser ? "true" : "false"),
        };

        var viewModel = init(options);
        ko.applyBindings(viewModel);

    </script>
}

Javascript

function init(options) {

    var viewModel = {
        userStatus: ko.observable(options.userStatus),
        userOptions: ko.observableArray(['New User', 'Old User'])
    };

    viewModel.selectionChanged = function(event) {
        alert(viewModel.userStatus());
    } 

    return viewModel;
};

但是,当我选择“New User”或“Old User”时,“userStatus”的值是“New User”或“Old User”,而不是 true 或 false。不确定我做错了什么,我们将不胜感激。

最佳答案

那是因为您的 userOptions 确实只包含字符串,而不是包含值 (boolean) 和标题 (字符串).

试试这个:

userOptions: ko.observableArray([
      { value: true, caption: 'New User' },
      { value: false, caption: 'Old User' }
])

然后在您的 HTML 中:

<select data-bind="options: userOptions,
                   optionsValue: 'value',
                   optionsText: 'caption',
                   value: userStatus,
                   event: { change: selectionChanged }">

参见 DocumentationFiddle

关于javascript - Knockout.js bool 选择列表选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33111106/

相关文章:

javascript - AngularJS 中的滚动事件

Ruby (Sinatra) JSON.parse 不适用于 json 数据

javascript - 如何使用 knockout 绑定(bind)新元素?

javascript - KnockoutJS 仅在字段部分完整时验证

javascript - 使用 JavaScript 更新站点中特定颜色的所有实例

javascript - 不影响表单字段值的 IE 占位符修复

javascript - $(window).scroll(...) 正在运行,即使模板在 meteor 中被破坏

jquery - 使用 jQuery UI 调整 iFrame 大小

javascript - 在 Javascript 中停止父处理程序调用

javascript - 创建一个从左到中的动画