2014-09-24 63 views
0

我想问一下,如何注入到服务中的角应用app.js文件?(在我称为DialService情况下的服务)。角度如何注入服务为.RUN(功能?

angular.module('starter', ['ionic', 'starter.controllers', 'starter.services']) 

.run(function($ionicPlatform) { 
    $ionicPlatform.ready(function(DialService) { 

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

DialService.makeCall(jsonObj.phone_number); 

我有遗漏的类型错误:无法调用“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

期间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 
    }); 
};