получить доступ к переменной в директиве от контроллера

0

Я создал директиву, я использую в своем шаблоне:

<data-input> </data-input>

В моей директиве (dataInput) у меня есть шаблон (... data-input.html). В этом шаблоне html-код говорит:

<input ng-change="dataChanged()" ... > ...

В JavaScript говорится:

scope.dataChanged= function(){ //change the data }

Работает отлично, но знаю, что мне нужно безопасно менять измененные данные на переменную в моем контроллере (это, разумеется, разная область). Шаблон, в который я помещаю <data-input> </data-input> принадлежит к последней области, которую я пытаюсь достичь.

Я попробовал его через параметр, но он не работал. благодаря

  • 0
    Можете ли вы предоставить еще немного кода? Где определен ваш контроллер? Оборачивает ли это вашу директиву?
  • 0
    Если вы предоставите код своей директивы, мы сможем вам помочь. Похоже, это будет зависеть от того, как вы реализуете директиву. Вы включили контроллер, или делаете все в функции связи?
Теги:

2 ответа

0

Вот ваши варианты:

  1. Вы можете установить контроллеры, если это возможно. Это создаст наследование области, и вы сможете обмениваться переменными родителя.

  2. Вы можете использовать $rootscope от обоих контроллеров для обмена данными. Функция dataChanged может сохранить что-либо в $rootscope

  3. Вы можете использовать angular.element чтобы получить объем любого элемента. angular.element('data-input').scope() возвращает его.

  4. Это не рекомендуется. Но есть обстоятельства, при которых люди используют глобальное пространство для связи между угловым и негладким кодом. Но я не думаю, что это ваше дело.

-1

Вы можете использовать Angular Watches, чтобы увидеть, что изменения - это переменная, например

например:

$scope.$watch('age + name', function () {
  //called when variables 'name' or 'age' changed
  //Or you can use just 'age'
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню