15

我正在研究一组角度指令,我想根据属性的存在或值加载正确的模板。

<my-form horizontal> </my-form>
<my-form vertical> </my-form>

如果是水平的,templateUrl 应该是/partials/horizontal-form,如果是垂直的,templateUrl 应该是/partials/vertical-form

我对 templateUrl 很感兴趣,因为templatehtml 依赖于属性,所以我不能使用。在compile.pre函数中,已经加载了 html。

如果有另一种方法可以实现这一点,我对此持开放态度,因为我现在从角度开始,信息越多越好。

谢谢

4

2 回答 2

22

仅供参考,现在已正确固定在角度 1.1.4

您可以将函数传递给 templateUrl。输入参数是元素,属性。并返回一个字符串(您希望使用的 templateUrl)

此处的文档:http: //code.angularjs.org/1.1.4/docs/guide/directive

于 2013-05-13T09:16:47.820 回答
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";
    }
}

希望这可以帮助!

于 2012-09-17T08:08:21.307 回答