在我的app.js中我有这个方法:
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
gvi.Notifications.registerForPush(MessagesService.onNotificationResponse);
});
})
还有一家工厂:
.factory('MessagesService', function($scope, $q) {
var messages = [];
return {
onNotificationResponse: function(sender, message, msgId, msgType, msgUrl) {
console.log("myApp.onNotificationResponse:" + message + " msgUrl:" + msgUrl);
$scope.messages.push({
sender: sender,
message: message,
msgId: msgId,
msgType: msgType,
msgUrl: msgUrl
});
MessagesService.save($scope.messages);
},
}
})
当我打开应用程序时,出现此错误:
Uncaught ReferenceError: MessagesService is not defined
如何在ionicPlatform.ready函数中使用MessagesService工厂?
编辑:
我修复了MessagesService错误,现在如何在工厂中使用$ scope?
答案 0 :(得分:3)
您尚未在运行
中传递MessageService
依赖项
.run(function($ionicPlatform,MessagesService) {
$ionicPlatform.ready(function() {
gvi.Notifications.registerForPush(MessagesService.onNotificationResponse);
});
})
更新:根据您的要求,您需要重构您的服务,因为服务无法引用范围。 您的服务应该将消息数组公开到范围,而不是使用在范围上定义的那个。
.factory('MessagesService', function($scope, $q) {
var messages = [];
return {
onNotificationResponse: function(sender, message, msgId, msgType, msgUrl) {
console.log("myApp.onNotificationResponse:" + message + " msgUrl:" + msgUrl);
messages.push({
sender: sender,
message: message,
msgId: msgId,
msgType: msgType,
msgUrl: msgUrl
});
MessagesService.save(messages);
},
messages:messages
}
})
现在,您可以使用MessageService.messages
属性在任何控制器中引用此消息集合。