2016-04-12 23 views
0

所以我有這個表,每行都有選擇框。問題是,當我在一個選擇框中進行更改時,所有這些更改顯示相同的值。我需要的是取消綁定所有選擇框,以便能夠在每個選擇框上進行不同的選擇。選擇角ng-repeat多行表

代碼是這樣:

<tr ng-repeat="item in userMappings.items" ng-model="item.mapped"> 
    <td class="col-md-3" ng-model="mappingType.name"> 
    {{item.idsport}}, Game Type {{item.idgametype}}, {{item.name}} (Current limit {{item.value}}) 
    </td>     
    <td class="col-md-3 mapType" style="padding-bottom: 25px; padding-left: 15px" > 
    <h4>Mapping Type: <span style="font-size:0.8em">{{selectedType}}</span> </h4> <br /> 
    <select ng-model="mappingType.name" ng-change="which($index); selectedRow()" ng-options="item.name for item in mappingType"></select> 
    </td> 
</tr> 
+0

這裏不太清楚你的數據是如何構造的,這是回答這個問題的非常重要的信息。 – Scott

+0

$ scope.mappingType = [{name:「Sport」},{name:「League」},{name:「No Mapping」}]; 然後我有一個約1000個對象的表格。如果我在一個選擇上做出選擇,所有其他更新顯示相同的值... – kikemx78

回答

0

當您使用ng-model綁定到mappingTypes.name它會修改控制器範圍的財產,因爲這是它的定義在哪裏。 mappingTypes不是ng-repeat範圍的一部分,所以它通過範圍繼承鏈並在那裏更新它。所以當你選擇一個物品時,mappingTypes現在是一個name屬性的數組。所有的項目綁定到同一個數組,因此它們都具有相同的值。

如果您只想更改ng-repeat中的特定項目,則應該使用類似item.mapping之類的內容。如果修改除item以外的任何內容,它將修改整個控制器的範圍。

+0

嗨斯科特,我在哪裏必須使用item.mapping? – kikemx78

+0

對於你的'