Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to generates dynamically ng-model="my_{{$index}}" with ng-repeat in AngularJS?

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.

like image 398
Federico Piazza Avatar asked Oct 24 '13 17:10

Federico Piazza


People also ask

How do I get the index of an element in NG-repeat?

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.

What is difference between ng-repeat and Ng options?

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.

What does [( ngModel )] do?

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.

What can I use instead of NG-repeat?

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.


1 Answers

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

like image 98
Beterraba Avatar answered Oct 02 '22 04:10

Beterraba