Я создал директиву, я использую в своем шаблоне:
<data-input> </data-input>
В моей директиве (dataInput) у меня есть шаблон (... data-input.html). В этом шаблоне html-код говорит:
<input ng-change="dataChanged()" ... > ...
В JavaScript говорится:
scope.dataChanged= function(){ //change the data }
Работает отлично, но знаю, что мне нужно безопасно менять измененные данные на переменную в моем контроллере (это, разумеется, разная область). Шаблон, в который я помещаю <data-input> </data-input>
принадлежит к последней области, которую я пытаюсь достичь.
Я попробовал его через параметр, но он не работал. благодаря
Вот ваши варианты:
Вы можете установить контроллеры, если это возможно. Это создаст наследование области, и вы сможете обмениваться переменными родителя.
Вы можете использовать $rootscope
от обоих контроллеров для обмена данными. Функция dataChanged
может сохранить что-либо в $rootscope
Вы можете использовать angular.element
чтобы получить объем любого элемента. angular.element('data-input').scope()
возвращает его.
Это не рекомендуется. Но есть обстоятельства, при которых люди используют глобальное пространство для связи между угловым и негладким кодом. Но я не думаю, что это ваше дело.
Вы можете использовать Angular Watches, чтобы увидеть, что изменения - это переменная, например
например:
$scope.$watch('age + name', function () {
//called when variables 'name' or 'age' changed
//Or you can use just 'age'
});