2013-08-11 3 views
0

У меня проблема с witn angularjs, я создал фабрику и директиву на входе. В моей директиве, когда значение изменения ввода, я хочу обновить значение контроллера. Но на самом деле, я нахожусь в одном событии поздно в своем контроллере. Я объясняю себе:Обновление области действия директивы не обновляет область управления (AngularJs)

  • Когда я записываю «А» на моем входе, мой родитель значение контроллера не изменяет
  • Если я записываю «B», мой родитель значение контроллера будет «A»
  • Если Я записываю "C", мой родитель значение контроллера будет "AB" ...

Я создал plinkr, чтобы продемонстрировать свою проблему:

http://plnkr.co/edit/h0r0Gu7VqvWkkgshQtRC?p=preview

Спасибо

ответ

3

Есть несколько вещей, которые здесь не так

  1. Не называйте свой собственный атрибут ng-model. ngModel уже используется для прикрепления ModelController к полю формы. Вы не можете просто использовать один и тот же атрибут для другой цели и быть неожиданным, когда все конфликтует :)

  2. Директива ngModel уже позаботилась о привязке вашего значения полей ввода к свойству области. Нет необходимости делать это с element.keydown.

  3. Даже если то, что вы делали в element.keydown была действительно, вам нужно обернуть весь обратный вызов в scope.$apply() так, что изменения могут быть отражены по всему приложению. Это основная причина задержки, которую вы наблюдаете.

Помимо этих конкретных точек, способ, которым вы написали этот пример, указывает на непонимание некоторых базовых концепций в AngularJS. Объяснение всего этого с нуля превысит объем этого ответа. Я рекомендую reading up on directives и посмотрю, как реализованы некоторые встроенные директивы AngularJS. You can see their sourcecode here.

Смежные вопросы