Обновление
extras methods jqLite также имеет метод контроллера для извлечения конкретного контроллера, связанный с элементом. Таким образом, вы можете запросить ng-модели и получить имя контроллера как angular.element(el).controller('ngModel')
.
контроллер (имя) - получает контроллер текущего элемента или его родителя. По умолчанию получает контроллер, связанный с директивой ngController. Если имя указано как имя директивы camelCase, тогда будет восстановлен контроллер для этой директивы (например, «ngModel»).
угловые также размещает контроллер, связанный с элементом на его данных. Аналогично, экземпляр контроллера ngModel, связанный с директивой, доступен через $ngModelController
. Таким образом, вы можете получить к нему доступ и использовать экземпляр ngModel для выполнения всех ваших действий. Однако это совершенно нестандартный способ сделать это, потому что $ngModelController
недокументирован и нет гарантии, что реализация не изменится в будущих версиях.
Пример реализации:
.directive('parentDirective', function($timeout){
return{
restrict:'E',
link:function(scope, elm){
/*Get the elements with the attribute ng-model, in your case this could just be elm.children()*/
var elms = [].slice.call(elm[0].querySelectorAll('[ng-model]'), 0);
/*get the ngModelControllerArray*/
var controllers = elms.map(function(el){
return angular.element(el).controller('ngModel');
//return angular.element(el).data('$ngModelController');
});
/*As a sample implementation i am registering a view value listener for these controller instances*/
controllers.forEach(function(ngModel){
ngModel.$viewChangeListeners.push(logViewChange.bind(null, ngModel));
});
function logViewChange(ngModel){
console.log(ngModel.$name, ngModel.$viewValue);
}
}
}
});
Plnkr
Спасибо за вашу приверженность. Это решение. Крутильной частью является «return angle.element (el) .data ('$ ngModelController');". Эта строка также может быть записана следующим образом: «return angle.element (el) .controllwe ('ngModel');". Ссылка на ваш Plnkr с этой модификацией http://plnkr.co/edit/shn6978dFkH3YFfkUnRy?p=preview – Christian
О да, я действительно забыл о дополнительных активах jqlite. Благодарю. Я уточню свой ответ. – PSL