I would like to ask you if you can give me a hand on this.
I have created a jsfiddle with my problem here. I need to generate dynamically some inputs with ng-model in a ng-repeater using the way ng-model="my_{{$index}}".
In jsfiddle you can see that everything it's working fine until I try to generate it dynamically.
The html would be:
<div ng-app> <div ng-controller="MainCtrl"> <table border="0" cellpadding="0" cellspacing="0" width="100%">   <tr>     <td>       <select ng-model="selectedQuery"          ng-options="q.name for q in queryList" >         <option title="---Select Query---" value="">---Select Query---</option>       </select>     </td>   </tr>   <tr ng-repeat="param in parameters">     <td>{{param}}:</td>     <td><input type="text" ng-model="field_X" />field_{{$index}}</td>   </tr> </table> <div> <div>   And the javascript...
function MainCtrl($scope) {  $scope.queryList = [     { name: 'Check Users', fields: [ "Name", "Id"] },     { name: 'Audit Report', fields: [] },     { name: 'Bounce Back Report', fields: [ "Date"] }    ];  $scope.$watch('selectedQuery', function (newVal, oldVal) {     $scope.parameters = $scope.selectedQuery.fields;   }); }   Can you give me any idea?
Thanks a lot.
Note: The $index variable is used to get the Index of the Row created by ng-repeat directive. Each row of the HTML Table consists of a Button which has been assigned ng-click directive. The $index variable is passed as parameter to the GetRowIndex function.
ng-options is the directive which is designed specifically to populate the items of a dropdown list. One major advantage using ng-options for the dropdown is, it allows us to pass the selected value to be an object. Whereas, using ng-repeat the selected value can only be string.
The ngModel directive is a directive that is used to bind the values of the HTML controls (input, select, and textarea) or any custom form controls, and stores the required user value in a variable and we can use that variable whenever we require that value. It also is used during form validations.
The *ngFor directive in Angular is similar to the ng-repeat directive in AngularJS. It repeats the associated DOM element for each item in the specified collection.
Does it solve your problem?
function MainCtrl($scope) {      $scope.queryList = [         { name: 'Check Users', fields: [ "Name", "Id"] },         { name: 'Audit Report', fields: [] },         { name: 'Bounce Back Report', fields: [ "Date"] }        ];     $scope.models = {};     $scope.$watch('selectedQuery', function (newVal, oldVal) {         if ($scope.selectedQuery) {             $scope.parameters = $scope.selectedQuery.fields;         }     }); }   And in your controller:
  <tr ng-repeat="param in parameters">     <td>{{param}}:</td>     <td><input type="text" ng-model="models[param] " />field_{{$index}}</td>   </tr>   Fiddle
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With