Мы следующий сценарий:контроллера ngModel и templateUrls в AngularJS 1.5
есть контейнер, который может иметь х входные элементы (х> = 0) Каждые входной элемент использует нормальные нг-связывают
В в контейнере есть функция, которая добавляет $ parsers и $ validators к каждому включенному ngModelController.
код выглядит следующим образом:
<form-element>
<fs-input-a ng-required="true" ng-model="model.streetname" name="streetname"></fs-input-a>
<fs-input-b ng-required="true" ng-maxlength="5" ng-pattern="/\d$/" ng-model="model.streetnr" name="streetnr"></fs-input-b>
</form-element>
В способе связи в "элемент формы" директивы мы называем что-то вроде этого: управления вар = элемент [0] .querySelectorAll ('[ng- model] '), i, ngModel;
// Get all ngModel controllers
if (controls.length) {
for (i = 0; i < controls.length; i++) {
ngModel = angular.element(controls[i]).controller('ngModel');
ngModel.$parsers.push(function(value) {
...
}.bind(ngModel));
ngModel.$validators.removeHidden = function() {
// on validation remove the hideError flag
this.$hideError = undefined;
return true;
}.bind(ngModel);
}
}
Это работало отлично под AngularJS 1.4.x
В AngularJS 1.5.x работает только если шаблон во входных директив она непосредственно определяется с помощью шаблона: «...» Если мы используем templateUrl : «...» у нас есть проблема, что ngModel будет неопределенным. В элементах управления [i] Я получаю правый элемент, и есть атрибут ng-model, но, похоже, что AngularJS 1.5 не скомпилировал элемент.
Есть ли лучший способ манипулировать ngModels дочерних элементов?
Попробуйте ввести логику в крючок жизненного цикла $ onInit. – Prashant
Я пробовал. Та же проблема. –