Select 敲除映射选择json无效

Select 敲除映射选择json无效,select,data-binding,knockout.js,knockout-mapping-plugin,Select,Data Binding,Knockout.js,Knockout Mapping Plugin,我是汽车制造商KO的新手。我有以下代码: var jData = [ { "Id": 2, "Name": "A" }, { "Id": 3, "Name": "B" }, { "Id": 4, "Name": "C" }] }; var viewModel = ko.mapping.fromJSON(JSON.stringify(jD

我是汽车制造商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,选项text:“Name”,选项value:“Id”,值:Id

怎么了? 谢谢
L

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

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

在这里检查JSFIDLE

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

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

在这里检查JSFIDLE
问题的根本原因是视图模型不包含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:



这里有一个工作提示:

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


这是工作小提琴: