2012-12-17 32 views
0

我是新來的automapper KO。我有這樣的代碼:淘汰賽映射選擇JSON不工作

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:「名稱」,optionsValue:「Id」,值:Id

有什麼不對? 謝謝 L

回答

2

中的jsfiddle根問題的原因是您的視圖模型不包含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

問題是與值:Id綁定,Id需要在「」。此外,綁定的值應該用於設置在下拉列表中選擇的值,只需將其設置爲ID始終選擇一個與值1

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

這裏檢查 http://jsfiddle.net/uVfgx/