2015-04-30 67 views
1

後,我有一個使用NG重複一個簡單的模板:操縱模板編譯

template.html

<div id='tmpl'> 
    <ul> 
    <li ng-repeat="item in items">{{ item.desc }}</li> 
</ul> 
</div> 

在我的指導,我編譯一個自定義的範圍該模板。然後該模板添加到頁面:

var element = $('#my-div'); 
var compiledTemplate = $compile(scope.template)(customScope); 
element.before(compiledTemplate); 
$('#tmpl').show(); 

這工作很好,但問題是,調用show()之後,我試圖來訪問模板innerHeight(),但在當時NG-在模板中重複執行還沒有執行,我得到的元素呈現之前的價值。

$('#tmpl').innerHeight(); // returns value before ng-repeat is finished 

那麼,在ng-repeat完成處理元素之後,是否有一種安全的方式來編譯元素的DOM操作?

+0

考慮在'ng-repeat'完成後進行操作。例如,檢查http://stackoverflow.com/questions/19864007/angularjs-event-for-when-model-binding-or-ng-repeat-is-complete。 –

回答

0

您可以創建一個指令並在後期鏈接階段獲取'innerHeight'。 ng-repeat應該已經被執行,並且正確的高度應該是可用的。

或者,您可以使用$ timeout並在完成模板完成後運行該函數。

+0

剛試過在$超時內包裝DOM操作,這似乎工作,謝謝。 – Zed