Как использовать сервис из директивы для вызова функции?

0

контроллер

angular.module('myApp')
  .controller('myCtrl', [  '$mdDialog', '$mdMedia', 'viewDialog', myCtrl]);
..

function myCtrl(  $mdDialog, $mdMedia, viewDialog) {   
    $scope.viewItem = function(ev,id) {
        viewDialog.ITEM(ev,id)
    };
}

HTML

<div ng-controller="myCtrl">
  <md-list-item ng-repeat="item in myarr">
     <a  my-view-dialog">
       <h4> {{item.id}} </h4>
     </a>
  </md-list-item>
</div>

Когда я вызываю функцию непосредственно контроллера формы, модальное окно отлично работает при щелчке

используя директиву

Моя директива

angular.module('myApp')
    .directive('myViewDialog', function ($parse) {
        return {
            compile: function(tElm,tAttrs){
              var exp = $parse('viewItem($event,item.id)')
              return function (scope,elm){
                elm.bind('click',function(){
                  exp(scope);
                });
              };
            }
        };;
    });

Теперь я хочу удалить зависимость контроллера и напрямую вызвать службу viewDialog из директивы, в которой она не работает.

вот код для инъекций

angular.module('myApp')
    .directive('myViewDialog', function ($parse, viewDialog) {
        return {
            compile: function(tElm,tAttrs){
              var exp = $parse('viewDialog.ITEM($event,item.id)') 
          return function (scope,elm){
                elm.bind('click',function(){
                  exp(scope);
                });
              };
            }
          };;
    });
  • 0
    Вы получаете какую-либо ошибку в консоли?
  • 0
    Что происходит? Ошибки на консоли?
Показать ещё 1 комментарий
Теги:
angularjs-directive
angular-services

2 ответа

0
angular.module('myApp')
    .directive('myViewDialog',['viewDialog','$parse', function (viewDialog,$parse) {
    return {
        compile: function(tElm,tAttrs){
          var exp = $parse('viewDialog.ITEM($event,item.id)') 
      return function (scope,elm,attr,ctrl){
            elm.bind('click',function(){
              exp(scope);
            });
          };
        }
      };;
}]);
  • 0
    Директива получить rootScope по умолчанию.
  • 0
    Я попытался, но не получил никакой ошибки при нажатии, но все еще не работает
Показать ещё 2 комментария
0

Вместо

.directive('myViewDialog', function ($parse, viewDialog)

Пытаться

.directive('myViewDialog', [ '$parse', 'viewDialog', function ($parse, viewDialog)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню