我正在开发Cordova / PhoneGap应用,我使用$ cordovaPush插件(包装为PushPlugin)来处理推送通知。
代码看起来像这样:
DefaultScheduler
" ecb"函数必须用窗口范围定义,即:
var androidConfig = {
"senderID" : "mysenderID",
"ecb" : "onNotification"
}
$cordovaPush.register(androidConfig).then(function(result) {
console.log('Cordova Push Reg Success');
console.log(result);
}, function(error) {
console.log('Cordova push reg error');
console.log(error);
});
此函数处理传入事件。我显然喜欢处理我的角度代码中的传入事件 - 如何将两者集成在一起,以便我的onNotification函数可以访问我的scope / rootScope变量?
答案 0 :(得分:1)
通常,您将第三方库包装在service
或factory
中,但本着回答您特定情况的精神......
这是一种可能性:
angular.module('myApp').
controller('myController', function($scope, $window) {
$window.onNotification = function() {
$scope.apply(function() {
$scope.myVar = ...updates...
});
};
});
有几点需要注意:
$window
,而不是window
。这是一个很好的习惯,因为它可以帮助你提高可测试性。由于Cordova的内部,您可能实际上需要使用window
,但我对此表示怀疑。$scope.apply
内。 如果您忘记这样做,那么您更新的所有变量都不会反映在视图中,直到摘要周期再次运行(如果有的话)。ng-click
),您可能会认为因为ng-click
有一个隐式$ apply包装回调,所以当时不会调用onNotification
函数,所以你仍然需要像上面一样$apply
。答案 1 :(得分:0)
在正文和内部控制器中定义一种邮件控制器,使用LocalSqlServer
服务。
HTML:
$window
JS:
<body ng-controller="MainController">
<!-- other markup .-->
</body>