2015-11-19 64 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

非常好!感謝隊友 - 將執行孩子控制器:) –