2015-05-14 46 views
1

目前正在處理一個大的html文件(7k +代碼行)。我必須重構整個事情。以前負責代碼的人員正在使用下面介紹的方法將特定模板加載到緩存中,以便通過ng-include使用。

<script type="text/ng-template" id="app/templates/example.html"> 
    <p>Example</p> 
</script> 

這些模板也作爲單獨的html文件存在。

我的第一個想法是使用module.run()階段期間

$templateCache.put(url,content) 

方法。這將是一個完美的解決方案,如果我能以某種方式傳遞template-url-path作爲第二個參數(內容)而不是傳遞實際的html代碼。

或者應該只是通過directive.templateUrl添加模板?

謝謝您提前!

回答

3

除非是重要的是你有緩存一旦應用程序開始加載,然後我只想把那些模板到他們自己的文件的模板,並把那templateUrl這些指令或路線。

編輯:


角會做應用程序時特定的路線或者指示載荷,之後角將只能去$templateCache服務壽命期間曾經爲模板的調用。因此,如果您只是在指令中指定了templateUrl,那麼一旦該指令首次加載,Angular會爲該模板執行ajax調用,然後將其存儲在$templateCache中。因此,使用views/user.htmltemplateUrl頁面上的100個指令將爲該模板調用一次,然後再不會再次重新加載該頁面。


如果使用grunt-angular-templates或吞掉-角templatecache像Dan說是一個選項,然後我會去與,特別是對生產的基礎之上。

但請記住使用咕嚕-角模板時,如果你有一個指令引用了templateUrl像/views/main.html和你已經views/main.html加載到$templateCache,角度會不知道默認情況下使用它,因爲它缺少領先的斜線。

+0

有沒有什麼辦法可以將現有的html模板加載到現金只需將url補丁作爲屬性傳遞而不是像通過$ templateCache那樣傳遞實際的html內容?問題是在應用程序的某個地方已經有了所有對ng-include的調用。將指令的來源也添加到現金(如果我使用templateUrl apporach)? – justMe

1

這可能是也可能不是你在找什麼,但如果你使用一個構建系統,如GulpGrunt您可以使用類似gulp-angular-templatecache基本上包你所有的模板,把它們放進$templateCache並提出了templates模塊出來的他們只需添加爲您的應用程序的依賴項。

1

我用grunt html2js任務將我的所有模板編譯成一個templates.js文件。

推薦給看看

相關問題