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

Я получил неперехваченный 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

Вы не можете внедрить услугу во время run фазы. Вы хотите использовать provider.

Transform это:

.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 
    }); 
}; 
Смежные вопросы