Angular工厂中的Phonegap / Cordova功能
Posted
技术标签:
【中文标题】Angular工厂中的Phonegap / Cordova功能【英文标题】:Phonegap / Cordova function in Angular factory 【发布时间】:2014-01-20 22:37:14 【问题描述】:我正在尝试将 PushPlugin 包装在基于 devgirls post 的 Angular 工厂中,但到目前为止没有成功。
angular.module('phonegap', [])
.factory('phonegapReady', function ($rootScope, $q)
var loadingDeferred = $q.defer();
document.addEventListener('deviceready', function ()
$rootScope.$apply(loadingDeferred.resolve);
);
return function phonegapReady()
return loadingDeferred.promise;
;
)
.factory('push', function ($rootScope, phonegapReady)
return
registerPush: phonegapReady().then(function (onSuccess, onError)
// stripped handlers
if (device.platform === 'android' || device.platform === 'Android')
pushNotification.register(
function ()
var that = this,
args = arguments;
if (onSuccess)
$rootScope.$apply(function ()
onSuccess.apply(that, args);
);
,
function ()
var that = this,
args =
'senderID': '123',
'ecb': 'onNotificationGCM'
;
if (onError)
$rootScope.$apply(function ()
onError.apply(that, args);
);
);
else
pushNotification.register(
function ()
var that = this,
args = arguments;
if (onSuccess)
$rootScope.$apply(function ()
onSuccess.apply(that, args);
);
,
function ()
var that = this,
args =
'badge': 'true',
'sound': 'true',
'alert': 'true',
'ecb': 'onNotificationAPN'
;
if (onError)
$rootScope.$apply(function ()
onError.apply(that, args);
);
);
)
;
);
得到一个错误:
TypeError: '[object Object]' is not a function (evaluating 'e.registerPush(function(a)console.log("fun"),console.log(a))')
我做错了什么?
【问题讨论】:
【参考方案1】:当您在承诺上调用 then
时,它会返回承诺,以便您可以链接回调。
我认为用函数包装 registerPush
会起作用,例如:
registerPush: function(onSuccess, onError)
phonegapReady().then(function ()
// Do something with closured onSuccess and onError
);
,..
【讨论】:
以上是关于Angular工厂中的Phonegap / Cordova功能的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ 静态 Web 项目到 Tomcat 或 Angular COR
Angular ng-view/routing 在PhoneGap 中不起作用
Phonegap/Angular - angular.element().scope() 不工作