Angular如何将服务注入.run(功能?

时间:2014-09-24 08:07:09

标签: javascript angularjs service

我想问一下,如何将服务注入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
        });
    };

});

1 个答案:

答案 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
  });
};