从 .运行 中的事件监听器调用控制器中的函数
Call function in controller from eventlistener in .run
使用 Ionic v1,当 app.run 中的事件侦听器触发时,我试图调用控制器中的函数。该事件由检测耳机插孔变化的 Cordova (Phonegap) 插件创建。
我一定是做错了什么,因为我找不到有效的解决方案。这是我的例子:
(function() {
var app = angular.module('mymodule', ['ionic']);
app.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
if(window.HeadsetDetection){
/*Monitor for changes in the headphone jack*/
document.addEventListener('deviceready', function() {
window.HeadsetDetection.registerRemoteEvents(function(status){
// *HERE* is where I want to call or somehow trigger
an action in my controller
});
}, false);
}
});
});
当检测到耳机插孔时,我正在尝试关闭在我的控制器中创建的离子弹出窗口。
您正在从 angular 应用程序的 .run
部分定义事件。
因此;与控制器通信;你需要使用:
- 在你的控制器中监视你的应用程序的全局变量($rootScope):这是一个丑陋的解决方案;我不推荐
- 广播/在您的应用程序中的事件:这是干净的解决方案
你需要;当您检测到要向您的应用广播新闻的事件时:
$rootScope.$broadcast('headphones-Updated');
在你的控制器中;你现在有权利赶上这个活动了:
$scope.$on('headphones-Updated', function(event, args) {
});
另一种解决方案必须在控制器中设置事件侦听器
使用 Ionic v1,当 app.run 中的事件侦听器触发时,我试图调用控制器中的函数。该事件由检测耳机插孔变化的 Cordova (Phonegap) 插件创建。
我一定是做错了什么,因为我找不到有效的解决方案。这是我的例子:
(function() {
var app = angular.module('mymodule', ['ionic']);
app.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
if(window.HeadsetDetection){
/*Monitor for changes in the headphone jack*/
document.addEventListener('deviceready', function() {
window.HeadsetDetection.registerRemoteEvents(function(status){
// *HERE* is where I want to call or somehow trigger
an action in my controller
});
}, false);
}
});
});
当检测到耳机插孔时,我正在尝试关闭在我的控制器中创建的离子弹出窗口。
您正在从 angular 应用程序的 .run
部分定义事件。
因此;与控制器通信;你需要使用: - 在你的控制器中监视你的应用程序的全局变量($rootScope):这是一个丑陋的解决方案;我不推荐 - 广播/在您的应用程序中的事件:这是干净的解决方案
你需要;当您检测到要向您的应用广播新闻的事件时:
$rootScope.$broadcast('headphones-Updated');
在你的控制器中;你现在有权利赶上这个活动了:
$scope.$on('headphones-Updated', function(event, args) {
});
另一种解决方案必须在控制器中设置事件侦听器