【问题标题】:Knockout mapping select json not work淘汰赛映射选择json不起作用
【发布时间】:2012-12-04 19:39:01
【问题描述】:

我是 automapper KO 的新手。我有这个代码:

 var jData = [
                    { "Id": 2, "Name": "A" },
                    { "Id": 3, "Name": "B" },
                    { "Id": 4, "Name": "C" }]
            };
        var viewModel = ko.mapping.fromJSON(JSON.stringify(jData));
        ko.applyBindings(viewModel);

此代码有效:

<div data-bind="foreach : $data">
            <input type="text" data-bind='value: Name' />
            <br />
        </div>

但如果我想通过地图进行选择:

 <select id="prova" data-bind='options: $data, optionsText: "Name", optionsValue: "Id"    , value: Id'></select>

我收到了这个错误

启用解析绑定。 消息:ReferenceError:'Id' 未定义; 绑定值:options: $data, optionsText: "Name", optionsValue: "Id" , value: Id

怎么了? 谢谢 升

【问题讨论】:

    标签: select data-binding knockout.js knockout-mapping-plugin


    【解决方案1】:

    问题的根本原因是您的视图模型不包含 Id 属性。你应该添加它。我会实现这样的东西:

     var jData = [
                        { "Id": 2, "Name": "A" },
                        { "Id": 3, "Name": "B" },
                        { "Id": 4, "Name": "C" }]
    
    function ViewModel(){
       var self = this;
    
       self.list = ko.mapping.fromJSON(JSON.stringify(jData));
       self.Id = ko.observable();
    }
    
    var viewModel = new ViewModel();
    ko.applyBindings(viewModel);
    

    HTML:

    <select id="prova" data-bind='options: list, optionsText: "Name", optionsValue: "Id"    , value: Id'></select>
    

    这是工作小提琴:http://jsfiddle.net/ardr8/

    【讨论】:

      【解决方案2】:

      问题在于 value:Id 绑定,Id 需要在“”中。此外,值绑定应该用于设置下拉列表中的选定值,只需将其设置为 Id 将始终选择值为 1 的值。

      <select id="prova" data-bind='options: $data, optionsText: "Name", optionsValue: "Id", value: "Id"'></select>
      

      在这里检查 jsfiddle http://jsfiddle.net/uVfgx/

      【讨论】:

        猜你喜欢
        • 2017-12-07
        • 2014-03-20
        • 2015-07-16
        • 1970-01-01
        • 1970-01-01
        • 2012-06-08
        • 1970-01-01
        • 2012-12-23
        • 2013-07-16
        相关资源
        最近更新 更多