动态指定绑定字段

时间:2015-10-06 04:22:41

标签: angularjs

我试图动态指定要绑定到输入值的元素的字段。字段名称由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;等。

我不确定这是否可能或如何解决这个问题。

1 个答案:

答案 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>

updated

注意:你实际上是绑定静态值 selectedRow.field1 ,它总是来自field1值而不是field2,3等等所以你可以用于动态绑定 selectedRow [text.listfieldname]