0

我是 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

怎么了?谢谢 L

4

2 回答 2

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/

于 2012-12-17T17:29:01.597 回答
2

问题的根本原因是您的视图模型不包含 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/

于 2012-12-17T19:50:16.963 回答