Javascript 如何将服务注入到.run(函数)中?

Javascript 如何将服务注入到.run(函数)中?,javascript,angularjs,service,Javascript,Angularjs,Service,我想问一下,如何将服务注入Angular应用程序中的app.js文件中?(在我的例子中,服务称为DialService) 如果我试图调用服务方法,例如: DialService.makeCall(jsonObj.phone_number); 我得到了未捕获的TypeError:无法调用未定义的方法“makeCall” 如何在app.js中调用服务方法 谢谢你的帮助 服务如下: /** * Service for making calls */ .factory('DialService',

我想问一下,如何将服务注入Angular应用程序中的app.js文件中?(在我的例子中,服务称为DialService)

如果我试图调用服务方法,例如:

DialService.makeCall(jsonObj.phone_number);
我得到了未捕获的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
        });
    };

});

您不能在
运行
阶段注入服务。您需要的是使用
提供程序

将此转换为:

.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
  });
};
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
  });
};