Задайте базу templateUrl для атрибута в директиве
Я работаю над набором директив angular, и я хочу загрузить правильный шаблон на основе наличия или значения атрибута.
<my-form horizontal> </my-form>
<my-form vertical> </my-form>
Если горизонтальный, templateUrl должен быть /partials/horizontal-form
и
Если вертикаль, templateUrl должен быть /partials/vertical-form
Я заинтересован в templateUrl, потому что я не могу использовать template
, поскольку html зависит от атрибутов. В функции compile.pre
html уже загружен.
Если есть еще один способ добиться этого, я открыт для него, так как теперь я начинаю с angular, и чем больше информации, тем лучше.
Спасибо
Ответы
Ответ 1
Одним из решений для этого является использование ng-include внутри файла шаблона.
Первый атрибут внутри файла шаблона будет иметь следующее:
<div ng-include = "getTemplate()">
</div>
В коде директивы вы должны написать что-то вроде:
scope : {direction : "="},
link : function(scope,element,attrs)
{
scope.getTemplate = function(){
if(scope.direction === "horizontal")
{
return "horizontal.html";
}
return "vertical.html";
}
}
Надеюсь, это поможет!
Ответ 2
fyi, это теперь правильно зафиксировано в angular 1.1.4
вы можете передать функцию templateUrl. входными параметрами являются элемент, атрибуты. и возвращает строку (templateUrl, которую вы хотите использовать)
docs здесь: http://code.angularjs.org/1.1.4/docs/guide/directive