0

очень новый для углового; попытайтесь понять, почему эта директива не работает. Пожалуйста, укажите мне, какие понятия вы узнаете.директива: контроллер не является функцией

директива работала, когда я должен был выписать шаблон в виде строки, но это очень некрасиво и я хочу, чтобы поместить их в отдельный файл HTML.

в index.html

<div message-modal trigger="trigger_message_modal"></div> 

Сообщение об ошибке: $scope.trigger_message_modal is not a function

в НЕ работают directives.js

app.module.directive('messageModal', function ($compile) { 
    return { 
     scope: { 
      trigger: "=trigger" 
     }, 
     controller: ['$scope', '$element', '$attrs', '$timeout', function ($scope, $element, $attrs, $timeout) { 

       $scope.trigger = function(title, message, modal_class, color, auto_hide){ 
        $scope.message = message; 
        $scope.modal_class = modal_class; 
        $scope.color = color; 
        $scope.title = title; 

        $('#messageWell').modal('show'); 

        if(auto_hide == true){ 
         $timeout(function(){ 
          $('#messageWell').modal('hide'); 
         }, 1000) 
        } 
       }; 
     }], 
     restrict: "E", 
     templateUrl :"well.html"       
    }; 
}); 
+1

Где вызывается '$ scope.trigger_message_modal'? Может ли это быть проблемой времени, когда функция запускается до того, как будет создан экземпляр контроллера директивы? – jchen86

ответ

0

Директива ограничивается Е, означает Директива в качестве элемента, <message-modal trigger="trigger_message_modal"> </message-modal>. Только тогда атрибут trigger может использоваться в директиве, используя область действия директивы. Если вам нужно использовать message-modal для использования в качестве атрибута, измените ограничение на A, но вы не сможете получить доступ к trigger в качестве переменной области видимости и должны получить доступ, используя $attrs родительского элемента.

+0

Почему вы не можете получить доступ к 'trigger' при использовании ограничения' A'? – Icycool

+0

«триггер» недоступен в его объеме. Доступ к нему возможен только из родительского атрибута. Изменили мой ответ, чтобы он дал понять. – rraman

+0

Я пробовал использовать оба, и они в значительной степени работали с теми же [jsbin] (https://jsbin.com/sutedunoxo/edit?html,js,output) – Icycool

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