2015-09-06 81 views
1

我编写了自定义指令<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吗? 代码“命令”指令:

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

它返回'',因为订单的模板尚未从URL中检索。如果你内联指定模板,那么它就是同步的。但是你应该问一个更广泛的问题,因为你可能不需要执行'$ compile(“”)'以 –

回答

0

是,模板被插入在“指令元素”的内侧(在这种情况下<order />)。所以(如果包括它或jQuery的),你可以使用jqLit​​e,像这样

var directiveTemplate = compiledOrder.children()

+0

开头。你是对的,但是id要求一点点不同的东西。在编译之后,我能否得到'',但'订购'html模板? –

+0

如果你在你的指令配置中使用'replace:true',那么是的(至少我会认为)。但它在文件中说,这将在未来被弃用。 – nomve

+0

我添加了指令代码 –

0

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