2015-09-06 112 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。