2

多次创建或自定义指令(我自己的指令或例如https://github.com/dpiccone/ng-pageslide)时,我发现所有显示逻辑都由单个 css 类控制。那时,指令归结为添加和删除单个类。因此,我可以简单地使用 ng-class 指令,而不是使用新指令(参见此处的示例:https ://gist.github.com/Hypercubed/8f40556eb0f6eddbcca3 )。自定义指令方法与 ng-class/CSS 样式方法相比是否有优势?我猜自定义指令不依赖于 $animate?我只是做错了吗?

对于另一个指令与 XXX 的问题,我们深表歉意。

4

1 回答 1

2

我认为你没有看到所有树木的森林。你专注于一个非常微小的细节而错过了更大的画面。指令不仅仅是简单地应用样式。我认为一个例子是最好的。例如,以评级指令为例。如果你想渲染一个星级模型,它可能看起来像这样:

<div ng-rating="album.rating" max="5"></div>

这可能会向 DOM 添加以下内容:

<ul class="inline">
    <li ng-repeat="i in max">
        <i ng-class="{ 'icon-start-empty': i > rating, 'icon-star': i <= rating }"></i>
    </li>
</ul>

在它使用的 ng-class 的封面下,但这只是封装在 rating 指令中的逻辑的一部分。它允许用户配置评分的星数,并渲染相同数量的 li 元素。然后因为您编写了一个指令,它允许您在需要时重用此逻辑。使用 ng-class 仅适用于该 1 位置。如果您想做同样的事情,那么您正在复制作为标志的代码,也许您想将该逻辑包装在指令中。

于 2014-07-15T02:38:35.860 回答