1

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

<share-buttons url="google.com"></share-buttons> 

Моя директива выглядит следующим образом (кофе сценария):

module.directive 'shareButtons',() -> 


    controller = ['$scope', ($scope) -> 

     $scope.share =() -> 
      console.log $scope.url 

    ] 

    return { 
     restrict: 'EA' 
     scope: { 
      url: '=url' 
     } 
     templateUrl: viewpath_common('/directives/share-buttons') 
     controller: controller 
    } 

А вот мой шаблон (Jade):

.social-icons 
    button.btn.btn-li(ng-click="share()") 
     i.fa.fa-linkedin.fa-fw 

Когда я нажимаю кнопку, вызывается правильная функция ($ scope.share), но регистрируется только одно: undefined.

Вы можете мне помочь?

ответ

1

его, потому что ваш атрибут url два пути данные, связанные с «=»

так он ищет переменную области видимости, как это:

$scope.google.com = // should be some value. 

, передаваемые из контроллера в директиве.

Если вы хотите, строка будет принят, использовать «@» один из способов связывания

scope: { 
     url: '@' 
} 

Примечание: Вы также можете получить доступ к нему с помощью атрибутов в функции связи директивы (которые вы не выше)

// like so 
restrict: 'EA' 
scope: { 
    url: '@' 
} 
templateUrl: "someURL", 
link: function(scope, elem, attrs) { 
    console.log(attrs.url); 
} 
+0

Вау, большое вам спасибо за быструю и совершенную помощь. Это решило проблему. Огромное спасибо! – DerJacques

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