Как запустить динамическую ng-модель из контроллера?

#javascript #angularjs #angular-ngmodel #ng-controller

#javascript #angularjs #angular-ngmodel #ng-контроллер

Вопрос:

Я запускаю цикл в своем html, и на каждой итерации будет динамически создаваться модель.

 <tr ng-repeat="item in voucherItems">
       <td><input type="text" ng-model="this['id-'   $index]" typeahead="brand.id as brand.BRANDNAME for brand in brandList" class="input-group" /></td>                     

</tr>
 

модель будет похожа на id1, id2, id3 и т.д.
Теперь я хочу использовать эту динамическую модель в моем контроллере angular.

 function GetValue(indexno) {
      var model=scope."id" indexno;
      dosomething(model);
 }
 

значением var model будет значение scope.id1 или scope.id2 или scope.id3, созданное в html.Теперь проблема в том,

область видимости.»id» indexno

не работает как scope.id1 или scope.id2 или scope.id3, которая будет динамической моделью, а скорее показывает ошибку. Вопрос в том, как я могу написать эту цитируемую часть в angular controller, которая будет работать как scope.id1 или scope.id2 или как я могу запустить эту модель динамически?

Комментарии:

1. как вы привязываете контроллер к DOM? используете ли вы ng-controller директиву? покажите это в html

2. Вы пробовали scope["id" indexn] ?

3. да, я использую ng-контроллер. эта часть ok.html успешно связать с controller.no проблема в этом. При запуске метода GetValue он также получил значение параметра indexno. Просто мне нужно написать что-то, что работает как scope.id1 и т.д.

4. @Nora это не работает

5. Вы можете определить переменную в своей области, как $scope.models = {} тогда ng-model="models['id-' $index]"

Ответ №1:

У меня есть решение.В html

ng-модель=идентификатор[$index]

в контроллере.Сначала я должен заявить

scope.id ={};

затем в методе GetValue

 function GetValue(indexno) {
      var model=scope.id[indexno];
      dosomething(model);
 }
 

это работает для меня.
scope.id [indexno] работает как scope.id1 или scope.id2 и т.д.Спасибо @Nora и @gianlucatursi.

НАБЛЮДЕНИЕ, которое Вы можете объявить scope.id =[] вместо scope.id ={} это тоже будет работать.