Прицел в AngularJS имеет очень иерархическую и хорошо заложенную структуру. Все они имеют основной $ Rootscope (то есть соответствующее угловое применение или NG-APP), а затем все остальные части объема унаследованы от этого $ ROOTSCOPE, или они вложены под основной областью. Много раз вы обнаружите, что эти области не разделяют переменные и не наследуют ничего от другого прототипа.
Итак, в этом случае, как вы общаетесь между прицелами? Одним из вариантов является создание Singleton Service в области приложения, а затем обрабатывать связь для всех подсказоп через эту службу.
Есть еще один вариант в AngularJS: обрабатывать связь через события в области масштаба. Но этот подход имеет некоторые ограничения; Например, вы не можете широко распространять события по объему всего мониторинга. Вы должны выбрать, чтобы общаться с применением родителей или детской масштабами.
$ on, $ emit и $ Broadcast делают передачу событий и данных между контроллерами простыми.
Примеры следующие
HTML -код
<div ng-controller = "parentctrl"> <!-parent-> <div ng-controller = "selfctrl"> <!-self-> <a ng-click = "click ()"> щелкните меня </a> <div ng-controller = "childctrl"> </div> <!-chid <!-родитель-> </div>
JS -код
app.controller ('selfctrl', function ($ scope) {$ scope.click = function () {$ scope. $ bardate ('to-child', 'Child'); $ scope. $ emit ('to-parent', 'parent');}}); app.controller ('parentctrl', function ($ racpope); Функция (Event, Data) {console.log ('parentctrl', data); $ scope. $ on ('to-child', function (event, data) {console.log ('childctrl', data); // Ребенок может получить значение}); function ($ scope) {$ scope. $ on ('toparent', function (event, data)Окончательный результат
ParentCtrl Parent
ChildCtrl Child
$ Emit и $ Broadcast может пройти несколько параметров, а $ ON также может получить несколько параметров.
Параметр события события в методе $, его свойства и методы объекта следующие
| Свойства события | Цель |
|---|---|
| Event.TargetScope | Объем излучения или распространения оригинального события |
| Event.currentscope | Объем событий, которые в настоящее время обрабатываются |
| Event.name | Название события |
| Event.stoppropagation () | Функция, которая предотвращает дальнейшее распространение событий (пузырька/захвата) (это работает только для событий, излучаемых с `$ Emit ') |
| Event.preventDefault () | Этот метод на самом деле ничего не делает, но установит `defaultPrevented` true. Он не проверяет значение «DefaultPrevented» до тех пор, пока исполнитель прослушивателя событий примет действия. |
| Event.DefaultPrevented | Правда, если `wormentdefault` вызывается |
Это кажется гораздо более удобным, чем сервисная связь в разных контроллерах ~~
Выше приведено сборник информации о Angularjs $ On, $ Emit и $ Trobcate. Мы будем продолжать добавлять соответствующую информацию в будущем. Спасибо за поддержку этого сайта!