Как отловить событие контроллера, в другом контроллере
Есть контроллер диалоговое окно, для ввода данных:
angular.module('pl', ['ui.bootstrap']); var ModalDemoCtrl = function ($scope, $modal, $log) { $scope.user = { user: 'name', password: null }; $scope.open = function () { $modal.open({ templateUrl: 'myModalContent.html', backdrop: true, windowClass: 'modal', controller: function ($scope, $modalInstance, $log, user) { $scope.user = user; $scope.submit = function () { $log.log('Submiting user info.'); $log.log(user); $modalInstance.dismiss('cancel'); } $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; }, resolve: { user: function () { return $scope.user; } } }); }; }; Есть другой контроллер, который рисует например таблицу данных, хочется добиться взаимодействия этих контров. Например надо по нажатию на кнопку Ок диалогового окна, выполнить команду со второго контрола, например $scope.myData.push(nameData); Не понятно то как внедрить первый контрол во второй, а потом еще и вызвать в нем $scope.myData.push(nameData); |
вариантов много. Некоторые из них:
1. через события 2. через сервис |
Спасибо.
Вот написана функция open в controller Grid, с отслеживанием событий. appRoot.controller('Grid', function ($scope, $resource, DataCache, Lotes, AppAlert, $modal) { $scope.edit = {}; $scope.open = function () { $scope.modalIns = $modal.open({ templateUrl: '/home/dialog', backdrop: true, windowClass: 'modal', controller: function ($scope, $modalInstance, $log, edit) { $scope.edit = edit; $scope.ok = function () { $modalInstance.close(edit); } $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; }, resolve: { edit: function () { return $scope.edit; } } }); }; $scope.dlgProduct = function () { $scope.open(); $scope.modalIns.result.then(function (data) { $scope.save(data) //$scope.myData.push(selectedItem); }, function () { $log.info('Modal dismissed at: ' + new Date()); }); }; Вот в это коде все как бы хорошо, вызывается диалог, ловится событие в другой функции $scope.dlgProduct = function () { $scope.open(); $scope.modalIns.result.then(function (data) { $scope.save(data) //$scope.myData.push(selectedItem); }, function () { $log.info('Modal dismissed at: ' + new Date()); }); Но все это хорошо работает когда ф-я описана в самом controller, но как описать эту работу в не controller, как factory (я так понимаю он не подходит), надо через сервис? |
как контроллеры в html располагаются? Если один внутри другого, то $scope.$emit|broadcast
или http://egghead.io/lessons/angularjs-...en-controllers |
И вообще пора бы инстанцировать модели а не напрямую со скоупом работать, к слову так.
nerv_, привет чувак) теперь я и в этом разделе обитать буду) |
Цитата:
|
Часовой пояс GMT +3, время: 12:02. |