2013-11-02 14 views
16

Есть ли способ передать templateUrl в мою директиву. Я понимаю, что могу использовать трансклюзию, но это кажется слишком большим. Например, у меня есть директива widget, которую я хочу заполнить конкретным html. Есть ли способ, чтобы передать его в как:Могу ли я передать templateUrl директиве - AngularJS

<div widget templateUrl="template1.html"></div> 
<div widget templateUrl="template2.html"></div> 

ответ

33

Если это фиксированный URL можно определить директиву, такие как

app.directive('myDirective', function() { 
    return { 
     templateUrl: function(tElement, tAttrs) { 
      return tAttrs.templateUrl; 
     } 
    }; 
}); 

затем использовать его как этот

<div my-directive template-url="template1.html"></div> 

В противном случае вы можете передать URL-адрес, поскольку вы передадите любой другой атрибут в директиву и используете ng-include в шаблоне своей директивы.

+2

Вы не можете использовать функцию 'templateUrl' в Angular 1.0.8, поэтому не забудьте использовать хотя бы Angular 1.1.4. – lort

+1

Хорошая точка. Прошло некоторое время, так как я использовал стабильную ветку! 'ng-include' должен по-прежнему работать в любом случае. – Andyrooger

+0

Также подтверждено для работы в 1.4.x – beauXjames

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