2016-09-22 31 views
0

我的角度中有一段代碼正在兩個文件中重複。 我使它成爲一個指令,所以它可以重用。我發送一些數據。Partular in Angular但不是ng -include /指令

假設這是模板:

<directive1 data="object"></directive1> 

這裏是指令的HTML 1

<div class="a">{{data.x}}</div> 
<div class="b">{{data.y}}</div> 
<div class="c">{{ data.z}}</div> 

現在讓我們有些人說的另一個地方,我想剛纔的上面兩行模板。由於css與此完全不同,我決定創建另一個指令,而不是將切換邏輯放在指令中。

<directive2 data="similarObject"></directive2> 

所以,現在的問題是,我想有這個在我的指令2 HTML:

<div class="a">{{data.x}}</div> 
<div class="b">{{data.y}}</div> 

但由於這將被複制我很困惑如何去這樣做。 我不想使用ng-include,因爲它從客戶端異步加載模板。我只是想讓我的代碼模塊化,所以HTML不會被重複。我不介意在用我的gulp系統構建之後HTML是否被複制。

編譯期間是否包含任何包含?因爲我使用gulp作爲我的構建系統,所以我希望類似的東西存在,這樣我就可以像require('./something')那樣執行類似於我在Javascript中執行的操作。

+0

我會去併爲您的第一個指令添加一個標誌,然後在最後一個div處添加'ng-show =「[your flag here]」''。 –

+0

@JakubJankowski即使我認爲。但是,我給了我的實際問題的簡化版本。它是一個很大的模板,它的一些內容是在一個控制器的視圖中需要的,其中一些內容需要在相同視圖的底部。即我不得不以某種方式將它分開或以重複的方式進行:( –

+1

,嵌套指令(第二個,更小,將是第一個,更大的部分)是我知道的唯一解決方案,但似乎你正在尋找其他的東西,非正常的,我現在不能幫助 –

回答

0

僅可以使用一個指令。在指令中添加一個額外的屬性。

<directive1 data="object" type="page1"></directive1> 

對於從那裏你需要額外的樣式第二頁調用:代碼

<directive1 data="similarObject" type="page2"></directive1> 

假設額外的CSS線在額外CSS類。因此,我們將有條件地設置課程。

<div class="a" ng-class="{ 'extra-css' : type === 'page2' }">{{data.x}}</div> 
<div class="b" ng-class="{ 'extra-css' : type === 'page2' }">{{data.y}}</div> 
<div class="c" ng-if="type === 'page1'">{{ data.z}}</div> 
+0

正如我所提到的,我不想這樣做,因爲這些ng-if&ng-class最終會出現在我的模板中,我寧願複製它,也不願意這樣做。 –