2014-04-10 104 views
0

我有代碼可以動態生成下拉列表。 我正在使用ng-repeat動態生成下拉列表,但我沒有得到有效的選定值。
我已更新我的代碼here
HTML下拉列表中的選定值無效:無法設置選定的值

<div ng-repeat="item in items"> 
    <select ng-model="item.shareToOption" ng-options="c.value for c in shareToOptions"></select> 
</div> 

JS

$scope.items = [ 
    { 
    "shareToOption" : {id:1,value:"AA1"} 
    }, 
    { 
    "shareToOption" : {id:2,value:"AA2"}, 
    }, 
    { 
    "shareToOption" : {id:3,value:"AA3"}, 
    }, 
    { 
    "shareToOption" : {id:4,value:"AA4"} 
    } 
]; 

$scope.shareToOptions = [ 
    {id:1,value:"AA1"}, 
    {id:2,value:"AA2"}, 
    {id:3,value:"AA3"}, 
    {id:4,value:"AA4"} 
]; 

UPDATE 我並不想在JSON對象中的任何改變,如何實現結果未做任何JSON變化目的?

使用下面的代碼我在模型中獲得正確的id,但值沒有得到更新。

<select class="form-control input-sm" ng-model="item.blockName.id" name="blockName" 
       ng-options="choice.id as choice.value for choice in blockNameOptions"> 

</select> 

參考:第一降http://jsfiddle.net/LCJub/1/

變化值降至AA2,但仍然我得到模型

[{"shareToOption":{"id":2,"value":"AA1"}},{"shareToOption":{"id":2,"value":"AA2"}},{"shareToOption":{"id":3,"value":"AA3"}},{"shareToOption":{"id":4,"value":"AA4"}}] 

回答

2

ngModel通過比較參考,並不值。

您需要從$scope.shareToOptions引用的對象:

$scope.shareToOptions = [ 
    {id:1,value:"AA1"}, 
    {id:2,value:"AA2"}, 
    {id:3,value:"AA3"}, 
    {id:4,value:"AA4"}, 
    {id:4,value:"AA5"}, 
    {id:4,value:"AA6"}, 
    {id:4,value:"AA7"} 
]; 

$scope.items = [ 
    { 
     "shareToOption" : $scope.shareToOptions[0] 
    }, 
    { 
     "shareToOption" : $scope.shareToOptions[1] 
    }, 
    { 
     "shareToOption" : $scope.shareToOptions[2] 
    }, 
    { 
     "shareToOption" : $scope.shareToOptions[3] 
    } 
]; 

演示http://jsfiddle.net/Xr8MU/

如果你不想改變現有的兩個陣列我會建議重新映射$ scope.items在控制器初始化時使用正確的引用:

var setReferences = function() { 
    var items = $scope.items; 
    for (var i = 0; i < items.length; i++) { 
     var reference = $scope.shareToOptions.filter(function (option) { 
      return option.id === items[i].shareToOption.id; 
     })[0]; 

     items[i].shareToOption = reference; 
    } 
}; 

setReferences(); 

演示http://jsfiddle.net/whNzw/

+0

:我不想在JSON對象中做任何改變,如何在不改變JSON對象的情況下實現上述結果? –

+0

這兩個數組需要看起來完全一樣嗎? – tasseKATT

+0

你能解釋一下,我怎麼能做到這一點? –

相關問題