1
在我的應用程序中,我通過$(element).contents()
(如果需要,我可以使用$(element).html()
)來保存非常大的HTML塊。如果該塊中包含複雜的指令信息,該如何將該塊轉換回角度?關鍵是避免重建ng-repeats。但是如果沒有編譯它,我會失去內部角色的所有功能。下面是HTML字符串看起來相對的一個小例子:恢復已保存的Angular HTML
<div ng-controller='fruits'>
<div class="dtable">
<!-- ngRepeat: fruit in fruitCollection track by fruit.id -->
<div ng-repeat="fruit in fruitCollection track by fruit.id" class="ng-scope drow selected" ng-class="fruit.selected && 'selected'">
<div class="idx ng-scope dinline">1</div>
<div class="name ng-scope dinline hilight">Apple</div>
<div class="info ng-scope dinline">Red</div>
</div>
<!-- end ngRepeat: fruit in fruitCollection track by fruit.id -->
<!-- ngRepeat: fruit in fruitCollection track by fruit.id -->
<div ng-repeat="fruit in fruitCollection track by fruit.id" class="ng-scope drow" ng-class="fruit.selected && 'selected'">
<div class="idx ng-scope dinline">2</div>
<div class="name ng-scope dinline">Orange</div>
<div class="info ng-scope dinline">Orange</div>
</div>
<!-- end ngRepeat: fruit in fruitCollection track by fruit.id -->
</div>
<h3>Filters</h3>
<div class="controls dtablev">
<!-- ngRepeat: filter in filterCollection -->
<div class="ng-scope checked" ng-click="toggleSelection(filter)" ng-class="filter.checked && 'checked'">Red</div>
<!-- end ngRepeat: filter in filterCollection -->
<!-- ngRepeat: filter in filterCollection -->
<div class="ng-scope" ng-click="toggleSelection(filter)" ng-class="filter.checked && 'checked'">Orange</div>
<!-- end ngRepeat: filter in filterCollection -->
</div>
</div>
顯然重新插入HTML看起來不錯,但是您不能點擊任何東西。我希望能夠處理這一點的$compile
有一些小祕密。
如何將該塊轉換回角度(如果其中包含複雜指令信息)?我沒有得到這部分。你正在尋找一些後編譯的HTML回到預編譯的HTML和角再次編譯 – madhured
我不認爲這是可能的。使用'{{}}'創建的任何綁定都將丟失。如果將它添加回來並進行編譯,那麼它與將模型綁定到模板html相同。那麼爲什麼要經歷這一切。 – Chandermani
而不是重新創建html塊。plz將html作爲模板存儲並將相關數據存儲爲javascript模型,並在需要時重新渲染它。 – harishr