我正在实施推送通知服务。我想在AngularJS中向AppCtrl控制器发送变量e.regid。 任何人都可以帮我解决这个问题..?
PushCustom.js
function onNotification(e) {
switch (e.event) {
case 'registered':
if (e.regid.length > 0) {
// Your GCM push server needs to know the regID before it can push to this device
// here is where you might want to send it the regID for later use.
//alert("regID = " + e.regid);
AppCtrl(e.regid);
}
break;
case 'message':
if (e.foreground) {
var soundfile = e.soundname || e.payload.sound;
var my_media = new Media("/android_asset/www/" + soundfile);
my_media.play();
}
break;
case 'error':
break;
default:
break;
}
}
app.js
app.controller('AppCtrl',
['$scope','$http', function($scope, $http, e.regid){
alert(e.regid);
$scope.regid = e.regid;
}]);
任何人都知道如何使这项工作?谢谢!
答案 0 :(得分:1)
使用AngularJS Service作为控制器之间的共享变量。 为它设置setter和getter服务。
答案 1 :(得分:0)
您可以使用广播或发射,具体取决于您的范围。并在你的控制器中捕获它。通过:https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope - broadcast,emit和$ on。
答案 2 :(得分:0)
switch (e.event) { case 'registered': if (e.regid.length > 0) { //******************* new line ********************// angular.element(document).scope().$broadcast('GCM_PUSHER',e.regid) } break; case 'message': if (e.foreground) { var soundfile = e.soundname || e.payload.sound; var my_media = new Media("/android_asset/www/" + soundfile); my_media.play(); } break; case 'error': break; default: break; } }
然后在您的控制器中收听广播事件:
app.controller('AppCtrl',['$scope','$http', function($scope, $http){ $scope.$on('GCM_PUSHER',function($event,body){ //********* logic here guys *********// }); }]);