在自定义指令上调用$compile



我写了自定义指令<order></order>。它有以下模板:

<div class="container"><div class="info"></div></div>

和我有父自定义指令<container></container>,它呈现简单<div></div>。在其链接功能中,我尝试以以下方式添加一个order:

var compiledOrder = $compile("<order></order>")(scope);

我认为它返回编译的html (<div></div>),但它返回<order></order>。这是一种预期行为吗?我可以得到渲染html的指令?指令"order"代码:

directives.directive("order",function(){
    return{
       restrict: "A/E",
       replace: true,
       scope: {
           order: "=data"
       },
       templateUrl: "http://127.0.0.1:37328/ItemTemplates/order.html",
       link: function(scope, element,attrs){
           console.log("link phase");
       }
    }
});

是的,模板插入到'directive元素'内部(在本例中为<order />)。所以你可以使用jqLite(或jQuery,如果你包含它),像这样

var directiveTemplate = compiledOrder.children()

所以,过了一段时间后,我决定尝试使用template:,而不是templateUrl:,并发现这种方法如我所料- $compile(<order></order>)(scope)从'order'指令模板返回html。

相关内容

最新更新