2014-09-24 29 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 
    }); 
};