2015-09-06 2 views
4

У меня есть служба, которая использует ngDialog (это единственная цель службы - показать общие диалоги: предупреждения, подтверждения и т. Д.). ngDialog требует, чтобы объект объекта объекта передавался как параметр для интерполяции шаблона диалога. Так что мне нужно создать область, назначить ее свойства и перейти к ngDialog.open. Проблема заключается в том, что я не могу вводить $ rootScope (или $ scope) в службу и область. $ New - единственный способ найти пустую область. Когда я впрыснуть $ rootScope нравится этаУгловое создание новой области внутри службы

myService.$inject = ['$rootScope', 'ngDialog']; 

я получаю ошибку: Неизвестный поставщик: $ rootScope Провайдер < - $ rootScope < - MYSERVICE Однако, это работает, если я просто использовать ярлык syntack для decalring зависимостей:

function myService($rootScope, ngDialog) {

//$rootScope here is accessible

}

Но этот подход не является предупреждающим. Итак, вопрос: как мне создать новую область обслуживания?

ОБНОВЛЕНИЕ Вот jsfiddle, который показывает структуру, которую я имел в проекте. Ошибка произошла, когда служба была вызвана из директивы, и теперь проблема исчезла. jsfiddle

+0

'ngDialog требует, чтобы объект объекта объекта передавался как параметр' - я не думаю, что это правильно. Не пытались ли вы пропустить область действия? – pablochan

+0

Требуется область для интерполяции шаблона. Если я не пройду область, появится диалог, но я ничего не могу изменить внутри него без видимости – Vitaly

ответ

1

Хотя вы впрыскивать $rootScope и ngDialog вам все еще нужно, чтобы задать их в службе.

var myservice= function($rootScope, ngDialog) { 
    // ... 
} 

myservice.$inject = ['$rootScope', 'ngDialog']; 
someModule.service('myservice', myservice); 

Update: Этот код прекрасно работает

var myservice = function($rootScope,ngDialog) { 
     alert($rootScope); 
} 

angular.module('myapp',['ngDialog']).controller('datac',function($scope,myservice){ 
    $scope.parties = []; 
    myservice.$inject = ['$rootScope','ngDialog']; 
}); 

angular.module('myapp').service('myservice', myservice); 

Вот plunker ссылка: http://plnkr.co/edit/FXrE3jNhAYqtv7vVGzgx?p=preview

Update: Ok жаль, что я был инъекционного службы в контроллере, а не просто вводить rootScope и ngDialog в эксплуатации вне контроллера

var myservice = function(obscope,obdialog) { 
alert(obscope); 

} 

myservice['$inject'] = ['$rootScope', 'ngDialog']; 


angular.module('myapp',['ngDialog']).controller('datac',function($scope,myservice){ 
    $scope.parties = []; 
}); 

angular.module('myapp').service('myservice', myservice); 
+0

Конечно! Мой код такой же, как ваш. И этот код не работает. Но если строка комментариев с myservice. $ Inject, это работает! – Vitaly

+0

Проблема возникает при введении области \ rootScope. Если я только заказываю ngDialog, он тоже работает – Vitaly

+0

См. Обновленный ответ – maddygoround

Смежные вопросы