2016-09-22 78 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最终会出现在我的模板中,我宁愿复制它,也不愿意这样做。 –