我想问一下,如何将服务注入Angular app中的app.js文件?(在我的案例中称为DialService服务)。
angular.module('starter', ['ionic', 'starter.controllers', 'starter.services'])
.run(function($ionicPlatform) {
$ionicPlatform.ready(function(DialService) {
如果我正在尝试呼叫服务方法,例如:
DialService.makeCall(jsonObj.phone_number);
我得到了Uncaught TypeError:无法调用未定义的方法'makeCall'
如何在app.js中调用服务方法?
感谢您的帮助。
服务如下:
/**
* Service for making calls
*/
.factory('DialService', function($ionicLoading) {
return {
makeCall: function(number) {
window.cordova.plugins.DirectCallPlugin.call(number, callSuccessCallback, callFailCallback);
}
};
var callSuccessCallback = function() {
console.log("Success call");
};
var callFailCallback = function() {
console.log("Fail calll");
$ionicLoading.show({
template: 'Error during call dial',
duration: 1000
});
};
});
答案 0 :(得分:0)
您无法在run
阶段注入服务。你想要的是使用provider
。
改变这个:
.factory('DialService', function($ionicLoading) {
进入这个:
.provider('DialService', function($ionicLoading) {
而且,由于提供商的服务类似于",您不需要返回任何内容,但需要将您的方法添加到提供者对象:
this.makeCall = function(number) {
window.cordova.plugins.DirectCallPlugin.call(number, callSuccessCallback, callFailCallback);
}
function callSuccessCallback () {
console.log("Success call");
};
function callFailCallback () {
console.log("Fail calll");
$ionicLoading.show({
template: 'Error during call dial',
duration: 1000
});
};