2014-09-24 54 views
0

我想在我的網站中實現AngularJS的ng-include語句,以減少代碼冗餘,但無法使其充分發揮作用。目前,我的index.html頁呼叫pageLayout.html我的index.html成功呼叫pageLayout.html,但當在index.html中添加<h1>標記時,我無法將其放在我稱之爲pageLayout.html的內容之上。有沒有人有任何想法?問題使用AngularJS ng-Include或Directive來調用html

這裏是鏈接:http://plnkr.co/edit/VmAO47l7RMXTGYYFFgLB?p=preview,但問題仍然存在:http://plnkr.co/edit/uarelZgzmITJXg2pYXfg?p=preview

我也使用類似下面的指令嘗試。

謝謝!

+0

你可以將h1移出具有ng-include的div,並將其作爲兄弟節點放在上面? – sma 2014-09-24 02:46:46

+0

你的代碼爲我工作。用一些文本添加一個p標籤payLagout.html – agconti 2014-09-24 02:49:12

回答

2

將包含策略設置爲element而不是true,因此您無法插入額外的內容。

而且含量擦everytime the template value changes

而且使用transclusion與ngInclude does not make sense

我寧願使用帶有transclusion一個指令(或綁定的名稱),如果你想避免代碼重複,像

directive('pageContainer',function(){ 
    return { 
     template:'<div class="divSize" ><h1>{{title}}</h1><div ng-transclude></div></div>', 
     scope:{ 
     title:"@" 
     } 
    } 
}) 
+1

+1但是:使用ngInclude進行transclusion沒有任何意義?真? https://github.com/angular/angular.js/issues/6580我可以想到很多其他的例子,它們有很多意義,這就是爲什麼他們實際上正在努力允許在ng-include指令中進行轉換。 – Josep 2014-09-24 03:10:13

+0

你說得對,我在引用源代碼。儘管如此,我認爲你仍然可以使用一個簡單的指令和一個允許進行轉換的模板,特別是當你使用ngInclude和靜態模板時。在github問題中提到的CSS選擇器的問題是對我來說糟糕的CSS類設計,而不是角度問題。但當然,如果你依賴第三方庫,它會更復雜:) – laurent 2014-09-24 03:14:42

+0

更詳細,但你可以使用[ngSwitch](https://docs.angularjs.org/api/ng/directive/ngSwitch)或使用不同的路由。但無論如何,你是對的我明白人們可能想要這個功能。我的觀點是,我認爲(作爲一個個人的想法),我們可以不用 – laurent 2014-09-24 03:24:01