2016-12-15 86 views
0

我想在我的指令中編譯html以通過jquery移入表中。

出於某種原因,我的$編譯並沒有抓住這整個字符串,它只是抓住重複指令。 如果我刪除<tr ng-repeat...>,它會抓住剩餘的字符串。

var el = $compile('<tr ng-repeat="row in gotData" ><td>{{row["data"]}}</td> <td>{{row["moredata"] % 5 |number:3}}</td> <td>{{row["moredata2"] % 5 | number:3}}</td><td>{{row["moredata3"] % 5 | number: 3}}</td><td>{{row["moredata"] % 5 | number: 3}}</td></tr>')(scope) 

我登錄了「厄爾尼諾」,我可以看到,它是缺乏完整的字符串,它只是位於這裏,在這個關鍵的重複指令:

el['0']['data'] 

希望這是可能的。

+0

gotData是函數還是項集合? – yyou

+0

問題 - 你什麼時候加載gotData?外部指令或內部指令?如果在外面,則檢查當ajax調用完成時是否運行指令(並且值已綁定到可通過ng-if指令解決的已完成ajax調用的指令) – Melzar

+0

gotData在控制器的作用域中可用。我希望它可以從控制器範圍中獲得,而不是來自指令的範圍。但是,相同的對象位於單獨的雙向綁定範圍'='上。 – user3738936

回答

1

從Angular文檔中查看該源代碼。

var $compile = ...; // injected into your code 
var scope = ...; 
var parent = ...; // DOM element where the compiled template can be appended 

var html = '<div ng-bind="exp"></div>'; 

// Step 1: parse HTML into DOM element 
var template = angular.element(html); 

// Step 2: compile the template 
var linkFn = $compile(template); 

// Step 3: link the compiled template with the scope. 
var element = linkFn(scope); 

// Step 4: Append to DOM (optional) 
parent.appendChild(element); 

您必須在使用$ compile編譯代碼之前對代碼進行angularify操作。

希望,這會有所幫助。祝一切順利。

+0

https://jsfiddle.net/nwu2bjtt/我不知道如果我複製你在這裏有什麼正確的,但我不能追加父母。我擔心父母是一個關鍵詞,所以我改變了它。 – user3738936

0

你需要做這樣的事情。

var throbberHolder = document.getElementById("throbber-mask"); 
$compile(throbberHolder)(angular.element(throbberHolder).scope()); or 
$compile(throbberHolder)(throbberHolder.scope()); 

在該throbber-mask將是你<tr>元素的id

+0

我將添加一個小提琴,範圍不可用,它被稱爲。 – user3738936

+0

https://jsfiddle.net/o8v7jmwc/ – user3738936

+0

https://jsfiddle.net/o8v7jmwc/創建var打破頁面 – user3738936