Angularjs 在自定义指令上调用$compile

Angularjs 在自定义指令上调用$compile,angularjs,angular-directive,Angularjs,Angular Directive,我编写了自定义指令。它具有以下模板: <div class="container"><div class="info"></div></div> 我以为它会返回已编译的html(),但它会返回。这是预期的行为吗?我可以得到指令的呈现html吗? “订单”指令代码: directives.directive("order",function(){ return{ restrict: "A/E", replace:

我编写了自定义指令
。它具有以下模板:

<div class="container"><div class="info"></div></div>
我以为它会返回已编译的html(
),但它会返回
。这是预期的行为吗?我可以得到指令的呈现html吗? “订单”指令代码:

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");
       }
    }
});

是的,模板插入到“指令元素”(在本例中为
)中。所以您可以使用jqLite(或者jQuery,如果您包括它的话),如下所示


var directiveTemplate=compiledOrder.children()

是的,模板插入到“directive元素”中(在本例中为
)。所以您可以使用jqLite(或者jQuery,如果您包括它的话),如下所示


var directiveTemplate=compiledOrder.children()

因此,一段时间后,我决定尝试使用
template:
,而不是
templateUrl:
,并发现使用这种方法可以像我预期的那样工作-
$compile()(scope)
从“order”指令模板返回html。

因此,一段时间后,我决定尝试使用
template:
,而不是
templateUrl:
,并发现使用这种方法可以像我所期望的那样工作-
$compile()(scope)
从“order”指令模板返回html。

你说得对,但我提出的要求有点不同。编译后,我是否可以不获取
,而获取“order”html模板?如果在指令配置中使用
replace:true
,则可以(至少我认为是这样)。但是文档中说这将在将来被弃用。啊…伙计,这都是因为加载指令模板…如果我使用
template:
compile立即返回此模板。你是对的,但我会问一些不同的问题。编译后,我是否可以不获取
,而获取“order”html模板?如果在指令配置中使用
replace:true
,则可以(至少我认为是这样)。但是它在文档中说这将在将来被弃用。啊…伙计,这都是因为加载了指令模板…如果我使用
模板:
compile立即返回此模板。它返回
,因为
订单的模板尚未从URL中检索。如果您内联指定模板,那么它将同步存在。但是您应该问一个更广泛的问题,因为您可能不需要先执行
$compile(“”
),它会返回
,因为
订单的模板尚未从URL中检索到。如果您内联指定模板,那么它将同步存在。但是您应该问一个更广泛的问题,因为您可能不需要首先执行
$compile(“”
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");
       }
    }
});