2016-07-01 3 views
1

Я начинаю проект с AngularJs (v 1). И это было приятно, пока я не начал задаваться вопросом о качестве моего проекта. Потому что теперь я стараюсь избегать злоупотребления $scope, $scope.$apply, $scope.broadcast и другими приятными вещами.AngularJs, о цикле дайджест

Так что теперь все мои _controller_s используют var vm = this; вместо $scope, а мои директивы используют обратные вызовы вместо $scope.$apply. Проблема в том, что изменения не обновляются. Хотя использование $scope.$apply атрибута модели внутри директивы автоматически обновляло представления, это не так с обратным вызовом контроллера, который обновляет атрибут модели. Тогда обходным путем является использование _event_s, но с $scope.$broadcast и его друзьям не рекомендуется, я должен создать своих собственных наблюдателей.

Но в конце я чувствую, что теряю классные функции AngularJs. И начал задаваться вопросом, как это делают профессионалы.

  • Как вы гарантируете, что изменения, внесенные в модель, будут обновлены до представления?
  • Как вы гарантируете, что изменения, внесенные в модель из представления, будут обновлены до другого (основные данные)?

Большое спасибо за ваши советы.

+0

Это довольно широкий вопрос. Для общих советов нам помогла [Руководство по стилю с угловым 1] (https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md). – TrueWill

+0

Очень широк. Укажите конкретный минимальный пример того, что не работает, как вы ожидаете. С кодом. –

ответ

1

Calbacks не вызывают угловой дайджест. Но события также не вызывают переваривания. Дело в том, что вы обычно хотите называть дайджест после: -user click -user input -http response -... И для всех этих случаев есть встроенные функции, которые запускают дайджест: $ http, ng- щелчок, ng-изменение и т. д.

+0

Итак, @Petr Averyanov, явные вызовы '$ scope. $ Apply' не так уж плохи? –

+1

Явные вызовы в $ scope. $ Apply - это не плохой вариант, это просто не для новичков - вам нужно быть на 100% уверенным в том, что вы делаете –

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