2015-11-19 2 views
3

У меня есть $ ionicPopup, который имеет некоторое интерактивное содержание в нем - однако, для того, чтобы использовать его, я должен initalise его с помощью простой команды:Выполнить код/​​событие после того, как ionicPopup закончил загрузку?

myFactory.initialise(myElement)

Есть ли способ, что я могу сказать, если всплывающее окно загружен, поэтому я могу инициировать эту инициализацию?
Есть ли какое-то событие ionicPopupLoaded?

Например:

var customPopup = $ionicPopup.show({ 
    title: 'Interactive Popup', 
    cssClass: 'interactive-popup', 
    template: '<div id="myElement"></div>', 
    scope: $scope, 
    buttons: [{ 
    text: 'Cancel', 
    type: 'button-default', 
    onTap: function(e) { 
     return false; 
    } 
    }, 
    { 
    text: 'Option', 
    type: 'button-energized', 
    onTap: function(e) { 
     e.preventDefault(); 
     myFactory.functionA(); 
    } 
    }, 
    { 
    text: 'OK', 
    type: 'button-balanced', 
    onTap: function(e) { 
     e.preventDefault(); 
     myFactory.functionB(); 
    } 
    }] 
}); 

Это мое всплывающее окно после того, как он загружается и отображается Я хочу, чтобы автоматически вызывать myFactory.initialise(myElement) инициализации моего содержания ..

Есть ли способ запуска кода один раз во всплывающем окне был загружен?

ответ

6

В исходном коде $ionicPopup, похоже, нет встроенного способа подключения к каким-либо загруженным процессам или событиям. Лично я бы просто создал свой собственный всплывающий сервис, но если вы должны использовать их объекты, похоже, единственный вариант - использовать шаблон, который вы можете передать в функцию show().

Это дает вам несколько вариантов. Первое заключается в использовании ng-init для запуска другой функции области видимости, хотя это считается плохой практикой. Например:

template: '<div ng-init="popupLoaded()"></div>' 

Для реализации более угловатый подходящий способ, использовать ng-controller внутри шаблона для создания контроллера ребенка для вашего шаблона тела. Затем вы можете вызывать все, что хотите, внутри этого контроллера. Например:

template: '<div class="my-popup-content" ng-controller="MyPopupChildCtrl"></div>' 
+0

Отлично! Спасибо mate - будет реализовывать дочерний контроллер :) –

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