AngularJs指令作为自定义标签,属性,类

时间:2014-06-02 11:24:07

标签: angularjs angularjs-directive

我刚刚开始使用AngularJs并正在尝试使用指令。根据我的阅读,可以使用以下任一方法在HTML中定义这些:

  • 自定义标记
  • 属性
  • 一堂课

<my-element></my-element>
<div my-element></div>
<div class="my-element"></div>

许多资源建议使用属性,因为它是最兼容的。我更喜欢自定义标签方法。值得庆幸的是,我只需要支持现代浏览器(IE10 +)。考虑到这一点,还有其他原因我仍然应该使用属性方法而不是自定义标记吗?

欢迎任何理由;兼容性,灵活性等。

2 个答案:

答案 0 :(得分:3)

当您的用例实际上需要自定义标记时,您实际上没有理由在自定义标记上使用属性方法。

在Angular中,您实际上不仅可以将指令注册为属性,类或元素,还可以注册注释(限制:&#39; M&#39;)。或者,如果您愿意,您可以将指令用作属性,类,元素或注释,而不仅限于一种类型(限制:&#39; AECM&#39;)。

但是,要回答您的问题,并不是应该使用属性方法而不是另一个方法。它总是取决于您的用例。如果您想扩展现有元素,则使用属性限制(顺便说一下也是默认值)是有意义的。如果你想构建一个可重用的组件,例如一个<tabs>元素,你宁愿选择元素限制,因为这就是你想要的。

也可能存在构建指令的情况,这些指令是元素,并使用属性的其他指令进行扩展。

因此,为您的用例选择最有效(并且最有意义)的内容。

答案 1 :(得分:1)

如果明天html决定使用与你的名称相同的名称来扩展和合并html标签,那将是一个问题,虽然您可能认为使用attrs可能会遇到同样的问题,但对html渲染的影响不会是同样,其他一些浏览器由于某种原因可能在将来表现出与IE相同的行为,并决定不接受或呈现自定义标签。我认为attrs是一个更安全的选择,但就目前而言,除了创建坚持html标准标签之外,我不知道为什么你会选择一个而不是另一个