select - Knockoutjs(版本 2.1.0) : bind boolean value to select box

标签 select knockout.js boolean knockout-2.0

我想使用 KO v2.1.0 将 boolean 值绑定(bind)到选择元素,但显然它不能按预期工作。
HTML 代码:

<select data-bind="value: state">
    <option value="true">On</option>
    <option value="false">Off</option>
</select>
JavaScript 代码:
var model = {
    state: ko.observable(false)
};

ko.applyBindings(model)
所以我希望选择框进入“关闭”位置,初始值 false但它处于“开启”状态。如果我输入状态:ko.observable("false")这将是正确的,但这不是我想要的。任何人都知道如何将 boolean 值绑定(bind)到带有 KO 的选择框?
jsfiddle:https://jsfiddle.net/greenlaw110/Ajm58/

最佳答案

这是我们从这个论坛 post 探索的一个选项:

ko.bindingHandlers.booleanValue = {
    init: function(element, valueAccessor, allBindingsAccessor) {
        var observable = valueAccessor(),
            interceptor = ko.computed({
                read: function() {
                    return observable().toString();
                },
                write: function(newValue) {
                    observable(newValue === "true");
                }                   
            });
        
        ko.applyBindingsToNode(element, { value: interceptor });
    }
};
因此,我们使用自定义绑定(bind)在 UI 和我们的 View 模型之间注入(inject)一个可写的计算 observable。这只是直接在您的 View 模型中执行此操作的替代方法。
示例:https://jsfiddle.net/rniemeyer/H4gpe/

关于select - Knockoutjs(版本 2.1.0) : bind boolean value to select box,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10510683/

相关文章:

boolean - 如何将产生 boolean 值的 cond 语句转换为仅涉及 not、and 和 or 的表达式

javascript - 如何从 onchange 事件外部获取 jQuery UI 自动完成值?

sql - 同时按两列分组,分组方式匹配col1,col2和col2,col1

javascript - 通过多个参数对 oberservableArray 进行排序

knockout.js - 如何在knockoutjs中使用对象设置选项值

python - 为什么 'True == not False' 是语法错误?

boolean - boolean 的任何助记技巧?

javascript - 禁用 jQuery 中的按钮,直到所有必填字段都有值(特别是选择)

PHP 和 MySql 有日期问题...?

javascript - Jquery ui datetimepicker 不适用于 knockout