自定义Angularjs指令与ng-class

时间:2014-07-15 01:33:31

标签: angularjs angularjs-directive angularjs-animation

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

对不起另一项针对XXX问题的指示。

1 个答案:

答案 0 :(得分:1)

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

<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下,但这只是评级指令中封装的逻辑的一部分。它允许用户配置评级超出的星数,并呈现相同数量的li元素。然后,因为您编写了一个指令,它允许您在需要时重用此逻辑。使用ng-class仅适用于该位置。如果你想做同样的事情,你要复制代码,这是一个标志,也许你想把这个逻辑包装成一个指令。