我有一个$ 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)
来初始化我的内容..
加载弹出窗口后是否有某种方法可以运行代码?
答案 0 :(得分:6)
查看$ionicPopup
源代码,似乎没有任何内置方式可以挂钩到某种加载的进程或事件。就个人而言,我只想创建自己的弹出服务,但如果你必须使用他们的对象,看起来唯一的选择就是利用你可以传递给show()
函数的模板。
这给你留下了几个选择。第一种是使用ng-init
来启动不同的范围功能,尽管这被认为是不好的做法。例如:
template: '<div ng-init="popupLoaded()"></div>'
要实现更加适合角度的方式,请在模板中使用ng-controller
为模板主体创建子控制器。然后你可以在这个控制器内调用你想要的任何东西。例如:
template: '<div class="my-popup-content" ng-controller="MyPopupChildCtrl"></div>'