我是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'未定义; 绑定值:选项:$ data,optionsText:“Name”,optionsValue:“Id”,value:Id
怎么了? 谢谢 →
答案 0 :(得分:2)
问题在于值:Id绑定,Id需要在“”中。此外,值绑定应该用于在下拉列表中设置所选值,只需将其设置为Id将始终选择值为1的值。
<select id="prova" data-bind='options: $data, optionsText: "Name", optionsValue: "Id", value: "Id"'></select>
在这里查看jsfiddle http://jsfiddle.net/uVfgx/
答案 1 :(得分: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/