2013-04-16 2 views
1

Так что скажем, я пишу настраиваемую директиву, которая загружает шаблон в div. Моя настраиваемая директива называется loadClickedTpl. При нажатии loadClickedTpl он должен прочитать атрибут и загрузить шаблон в #target.угловой объем путаницы

До сих пор мой HTML выглядит следующим образом:

<html np-app="mymodule"> 
     <head>...</head> 
     <body> 

      <a loadClickedTpl tplSrc="myTpl" > Click Me to load template </a> 

      <div id="target" ng-include src="clickedTpl"></div> 

      <script type="text/ng-template" id="myTpl"> 
       <h1>Loaded</h1> 
      </script> 

     </body> 
</html> 

Проблема устанавливающее clickedTpl вар, чтобы указать на шаблоне. Если это делается в html, так что <div id="target" ng-include src="'myTpl'"></div> работает отлично, делая это программно, это вызов. Вот что я пробовал до сих пор:

angular.module('loadATpl').directive 'loadClickedTpl', -> 
    (scope, element, attrs) -> 
      element.bind 'click', -> 
       # does not work 
       scope.clickedTpl = attrs.tplSrc 

       # also does not work 
       angular.injector(['ng']).invoke ($rootScope) -> 
         $rootScope.clickedTpl = attrs.tplSrc 

       # obviously does not work 
       clickedTpl = atts.tplSrc 

angular.module('mymodule', ['loadATpl']) 

Перехват кликов работает, но это было концом.

+0

Не называйте «угловым инжектором», так как это создаст новый инжектор. Скорее, вводите '' инжектор' в свою директиву. См. Также http://stackoverflow.com/a/14743553/215945 Если вы хотите получить доступ к '$ rootScope', вы можете просто ввести его в свою директиву. –

ответ

10

Вот рабочий пример: http://plnkr.co/edit/8BNYr9J8g6tRLMo8VdPi?p=preview

Вы должны использовать AttrS как 'нагрузка щелкнул-TPL' (дефис выражение) для угловых директив.

+0

Хорошо, такие работы. Когда его отдельный модуль, как в моем примере, останавливается. http://plnkr.co/edit/IsW1Yf6Ye8HuROO7KMVW – Fresheyeball

+0

+1 за помощь. – Fresheyeball

+0

Вы должны установить зависимость, даже если она пуста, попробуйте: 'angular.module ('loader', [])' – Tosh

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