Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.11.2013, 11:35
Новичок на форуме
Отправить личное сообщение для hopest Посмотреть профиль Найти все сообщения от hopest
 
Регистрация: 29.10.2013
Сообщений: 8

Как отловить событие контроллера, в другом контроллере
Есть контроллер диалоговое окно, для ввода данных:

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);
Ответить с цитированием
  #2 (permalink)  
Старый 20.11.2013, 23:06
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

вариантов много. Некоторые из них:
1. через события
2. через сервис
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #3 (permalink)  
Старый 21.11.2013, 11:54
Новичок на форуме
Отправить личное сообщение для hopest Посмотреть профиль Найти все сообщения от hopest
 
Регистрация: 29.10.2013
Сообщений: 8

Спасибо.

Вот написана функция 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 (я так понимаю он не подходит), надо через сервис?

Последний раз редактировалось hopest, 21.11.2013 в 11:58.
Ответить с цитированием
  #4 (permalink)  
Старый 21.11.2013, 12:16
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

как контроллеры в html располагаются? Если один внутри другого, то $scope.$emit|broadcast

или http://egghead.io/lessons/angularjs-...en-controllers
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 21.11.2013 в 12:25.
Ответить с цитированием
  #5 (permalink)  
Старый 27.11.2013, 02:37
Профессор
Посмотреть профиль Найти все сообщения от Maxmaxmaximus3
 
Регистрация: 18.11.2013
Сообщений: 275

И вообще пора бы инстанцировать модели а не напрямую со скоупом работать, к слову так.

nerv_, привет чувак) теперь я и в этом разделе обитать буду)
Ответить с цитированием
  #6 (permalink)  
Старый 27.11.2013, 16:53
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Maxmaxmaximus3
теперь я и в этом разделе обитать буду)
ааа, спасите, помогите
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
Событие click как правильно? piraids jQuery 9 20.08.2013 13:01
Как вставить в событие, указатель на объект, который получает это событие? Pacan228 Общие вопросы Javascript 2 04.07.2012 19:53
Как вызвать событие после события определенного в onchange Наталья Events/DOM/Window 2 12.09.2009 13:51
как проверить поддеружет браузер определенное событие? GOll Элементы интерфейса 9 24.07.2008 14:40