2013-04-17 3 views
2

У меня есть контроллер всплывающую:Вызов контроллера внутри контроллера в угловых

@PopupController = ["$scope", ($scope) -> 
    $scope.isActive = false 

    $scope.open = -> 
    $scope.isActive = true 

] 

И учителя контроллера:

@TeachersController = ["$scope", "Teacher", ($scope, Teacher) -> 
    $scope.teachers = Teacher.query() 

    $scope.showTeacher = -> 
    # somehow call PopupController.open() 

] 

Как звонить из PopupController.open()TeachersController?

Или, может быть, я делаю это неправильно, и у Углового есть несколько лучших способов его реализации?

+2

Можете ли вы преобразовать контроллер всплывающих окон в качестве всплывающего окна? – jpmorin

+0

@jpmorin теперь контроллер Popup привязан к представлению с помощью 'ng-controller' attr. Как я могу привязать службу таким же образом? – Kir

+2

Скорее всего, вы должны использовать директиву вместо контроллера ... Но это просто основано на имени. Контроллеры не должны иметь DOM-манипуляции, и не должно быть причин вызывать контроллер из контроллера. Служба может быть промежуточной, но опять же, если вы пытаетесь открыть всплывающее окно на странице, вам нужна директива. –

ответ

3

Вы можете использовать $broadcast (вниз к дочерним областям) или $ emit (вверх по иерархии областей) для передачи формы события одному контроллеру другому.

Затем вы зарегистрируете событие на ресивере, которое запускает вашу функцию. См. http://docs.angularjs.org/api/ng.$rootScope.Scope#$on.

+0

thx для ссылок – ocolot

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