Как отловить событие контроллера, в другом контроллере
Есть контроллер диалоговое окно, для ввода данных:
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, время: 03:49. |