【发布时间】:2018-05-01 05:08:35
【问题描述】:
我试图在收到推送通知时将一个函数调用到控制器中,传递一个 $broadcast / 工厂,但是当通过 angular.injector 调用时广播不起作用,这里是我的代码的和平:
push.js
window.onNotification = function(data) {
angular.injector(['ng', 'myApp']).get("laFactory").PushReceived(data.additionalData); // --> work fine
};
window.push = PushNotification.init({
"android": {
"senderID": "123456789",
"icon": "system",
"forceShow": true
}
});
window.push.on('notification', window.onNotification);
laFactory.js
.factory('laFactory', ['$http', '$rootScope', function ($http, $rootScope) {
var laFactory = {};
laFactory.PushReceived = function(data) {
$rootScope.$broadcast('handleNotify', {}); // --> don´t work when called by angular.injector!!! why not?!
};
$rootScope.$broadcast('handleNotify', {}); // this work fine
return laFactory;
}
myController.js
.controller('NotificacoesController', function($scope, $rootScope, laFactory) {
var handler = $scope.$on('handleNotify', function () {
alert('broadcast - on');
});
}
【问题讨论】:
-
可能是你
laFactory.PushReceived没有被调用尝试登录到laFactory.PushReceived里面的控制台看看它是否工作