2015-10-06 79 views
0

我試圖動態地指定要綁定到輸入值的元素的字段。字段名稱由html輸入的創建者指定,行(在可選行數組中)由html選擇指定。動態指定綁定字段

<div ng-app="myApp"> 
<div ng-controller="myCtrl">   

    <label for="ddlSelectionList">Select from list:</label> 
    <select id="ddlSelectionList" ng-model="selectedRow" ng-options="row as row.name for row in selectionList" ></select> 

    <div ng-repeat='text in texts'> 
     <label for='txt{{text.id}}'>{{text.name}}</label> 
     <input type="text" id='txt{{text.id}}' value='{{selectedRow.field1}}' /> 
    </div> 

</div> 

angular.module('myApp',[]) 
.controller('myCtrl',function($scope,$timeout){ 
    $scope.selectionList=[ 
     {'id':5, 'name':'row 5', 'field1': 'row5field1', 'field2': 'row5field2', 'field3': 'row5field3'}, 
     {'id':9, 'name':'row 9', 'field1': 'row9field1', 'field2': 'row9field2', 'field3': 'row9field3'}];  

    $scope.selectedRow = $scope.selectionList[1]; 

    $scope.texts=[ 
     {'id': 453, 
     'name': 'Input Text1', 
     'listfieldname': 'field1' 
     }, 
     {'id': 454, 
     'name': 'Input Text2', 
     'listfieldname': 'field2' 
     }, 
     {'id': 455, 
     'name': 'Input Text3', 
     'listfieldname': 'field3' 
     } 
    ]; 


}); 

jsfiddle is here。我想要發生的事情是將輸入綁定到selectedRow中的字段,如文本的listfieldname的值所指定的那樣。因此,輸入文本1會顯示,至少在最初,'row9field1',輸入文本2將顯示'row9field2'等

我不知道這是甚至可能或如何解決此問題。

回答

1

變化<input type="text" id='txt{{text.id}}' value='{{selectedRow.field1}}' /><input type="text" id='txt{{text.id}}' value='{{selectedRow[text.listfieldname]}}' />

<div ng-repeat='text in texts'> 
    <label for='txt{{text.id}}'>{{text.name}}</label> 
    <input type="text" id='txt{{text.id}}' value='{{selectedRow[text.listfieldname]}}' /> 
</div> 

updated

注:你實際上是結合靜態值selectedRow.field1,它永遠是field1的值不field2,3等,所以你可以使用動態綁定selectedRow [text.listfieldname]

+0

@monty您是否檢查過更新後的鏈接? – Balachandran

+0

完美。是的,我知道我正在靜態地做這件事......但是已經嘗試{{selectedRow。{{text.listfieldname}}}}無濟於事,所以把它放回到至少有一些東西用於測試。不知道方括號的東西。 – monty