【问题标题】:Unable to parse bindings for optionsText无法解析 optionsText 的绑定
【发布时间】:2013-02-27 17:24:26
【问题描述】:

我不确定为什么会收到此错误:

未捕获的错误:无法解析绑定。 消息:ReferenceError:数据未定义; 绑定值:options: dateOptionsArray,optionsText: data,value: data knockout-2.2.1.debug.js:1936 ko.utils.extend.parseBindingsString

对于这个模型:

function ViewModel(jsonModel) {

    var self = this;
    self.dateOptionsArray = ["YYYY-MM-DD", "YYYY-MM-DD HH:MM"]; //todo make this dynamic

在这个 html 中:

 <select id="f" data-bind="options: dateOptionsArray,optionsText: data,value: data"></select>

【问题讨论】:

    标签: knockout.js


    【解决方案1】:

    首先您需要有一个名为data 的属性才能进行value 绑定工作:

    function ViewModel(jsonModel) {
    
        var self = this;
        self.dateOptionsArray = ["YYYY-MM-DD", "YYYY-MM-DD HH:MM"];
        self.data = ko.observable();
    
    };
    

    第二个不需要optionsText。仅当数组中有复杂对象并且想要指定 KO 应该为选择文本使用的属性时才需要它。参见documentation

    <select id="f" data-bind="options: dateOptionsArray, value: data"></select>
    

    演示JSFiddle

    【讨论】:

    • 为什么它看起来是多余的?您需要一个属性(在本例中为 data)来保存来自 value 绑定的选定值:value: data
    • 啊酷,所以如果我这样做: self.data = ko.observable("YYYY-MM-DD HH:MM");那么会选择正确的选项吗?
    • 是的,确实 KO 做了两种方式的绑定。
    • 所以必须有一些代码在后台选择选项:)
    猜你喜欢
    • 2013-08-03
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 2012-10-31
    • 1970-01-01
    • 2013-02-06
    相关资源
    最近更新 更多