我试图动态指定要绑定到输入值的元素的字段。字段名称由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中的字段,由text的listfieldname的值指定。因此,输入文本1将至少在最初显示&#39; row9field1&#39;,输入文本2将显示&#39; row9field2&#39;等。
我不确定这是否可能或如何解决这个问题。
答案 0 :(得分: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>
注意:你实际上是绑定静态值 selectedRow.field1 ,它总是来自field1值而不是field2,3等等所以你可以用于动态绑定 selectedRow [text.listfieldname]