我正在处理一组角度指令,我想根据属性的存在或值加载正确的模板。
<my-form horizontal> </my-form>
<my-form vertical> </my-form>
如果是水平的,则templateUrl应为/partials/horizontal-form
和
如果是垂直,则templateUrl应为/partials/vertical-form
我对templateUrl感兴趣,因为我不能使用template
因为html取决于属性。在compile.pre
函数中,html已经加载。
如果有另一种方法可以达到这个目的,我对此持开放态度,因为我现在开始使用棱角分明,信息越多越好。
由于
答案 0 :(得分:22)
fyi现在已经在角度1.1.4中正确修复了
您可以将函数传递给templateUrl。输入参数是元素,属性。并返回一个字符串(您要使用的templateUrl)
答案 1 :(得分:11)
其中一个解决方案是在模板文件中使用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";
}
}
希望这有帮助!