2015-03-02 2 views
0

Мне было интересно, какой предпочтительный способ заставить другую часть приложения взаимодействовать друг с другом.Каким образом можно использовать разные части приложения angularjs для общения друг с другом?

Например, допустим, у нас есть директива A, отображающая продукт в корзине покупок пользователя. Эта директива имеет доступ к службе непрерывности, которая позволяет выполнять операции CRUD в элементе.

Давайте также укажем, что у нас есть директива B, которая отображает общее сообщение.

Теперь пользователь решает удалить продукт из своей корзины. Допустимо, чтобы сделать его опубликовать событие за этот путь ?:

$scope.$emit("item-deleted"); 

и затем B прослушивание этого типа события:

$scope.$on("data-received", function(event, next, current) { 
    // show up and tell "item deleted succesfully"  
}); 

Это хороший способ для достижения результата? Это определенно в других рамках и в разработке пользовательского интерфейса в целом. Я просто удивлялся, если это жизнеспособный способ в угловой.

Благодаря

+0

События и услуги - это обе возможности, поэтому вышеупомянутое решение в порядке. –

+0

В случае события вы должны сохранить обе директивы в той же иерархии областей. – khanmizan

ответ

1

Вы должны использовать услуги вместо распространения событий. Благодаря инъекции зависимостей, он очень прост в использовании. Это лучший способ заставить двух контроллеров разговаривать друг с другом.

Подробнее об услугах: https://docs.angularjs.org/guide/services

0

создать службу для директивы B, который будет предоставлять данные для общих сообщений. вводят эту службу в базовую службу директивы A., затем вызывайте эту службу с надлежащим сообщением.

Директива A должна автоматически отображать эти данные из-за двусторонней привязки данных угловых символов.

+0

Как очередь сообщений. А толкает в А и В привязан к нему? – nourdine

+0

Нет, просто позвоните в службу B из службы A – khanmizan

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