2016-08-02 3 views
1

Мне нужно использовать функцию ссылки для управления некоторыми элементами моего DOM, но для этого мне нужно использовать сервис. В функции контроллера я знаю, как это сделать, но в функции связи я понятия не имею, как этого добиться.Как ввести услугу в функцию связи?

--EDIT-- Позвольте мне поставить себя более ясно:

Я использую угловой с листовкой мерно. Но в листовке событие должно быть поставлено на link функции, как показано ниже:

link: function($scope) { 
    $scope.to.marker.on('dragend', function(eventArguments) { 
    var newPosition = eventArguments.target.getLatLng(); 
    $scope.model.geocodes = newPosition; 
    }); 
} 

Проблема заключается в том, что мне нужно, чтобы ввести услугу по этому вопросу. В угловом виде (http://docs.angular-formly.com/docs/formlyconfig) он показывает мне, что я могу ввести услугу на controller: function($scope), но не давайте мне сделать то же самое на link, и когда я меняю $scope.model.geocodes по ссылке, он не запускает watcher, который я установил в контроллере своего custom-template.

Ожидаю, что я ясно дал понять.

+0

Это неверный подход. Сначала вы должны разрешить любые данные в вашем контроллере, а затем, если необходимо, управлять элементом dom с разрешенными значениями. Я предполагаю, что вы используете $ scope, чтобы с этим справиться. Я бы рекомендовал использовать синтаксис ControllerAs. С Angular 1.5.x вы должны идеально использовать компонент и использовать $ element injectable и полагаться на свое представление, чтобы обрабатывать любые изменения в dom. Многие подходы действительны, хотя, только мои личные предпочтения. – zilj

+1

@musefan Я понял это как «Как использовать сервис в функции ссылки директивы» – zero298

ответ

3

Я считаю, что вы можете установить его в директиве и захватить его в функцию связи:

function SomeDirective(SomeService){ 
    return{ 
     link:function(){ 
      SomeService.something(); 
     } 
    } 
} 

SomeDirective.$inject = [ 
    "SomeService" 
]; 

angular 
    .module("some-module") 
    .directive("some", SomeDirective); 
Смежные вопросы