当前位置: 首页 > 面试题库 >

角度指令-元素还是属性?

范稳
2023-03-14
问题内容

我是一个团队的成员,该团队有大约6个UI开发人员,质量各异,几乎没有Angular经验。许多是承包商,几乎没有代码库经验。该应用程序具有非常漂亮的(复杂的)UI。它支持IE8
+(希望很快会成为IE9 +)。

我们正在为应用程序的主要扩展引入Angular,并且有人要求我为团队编写有关使用Angular的准则。

我们将使用指令来创建精美的UI元素,所有元素均以“
ipwr”为前缀,以避免名称冲突。我正在尝试确定是否要强制要求开发人员为其指令赋予限制“元素”或“属性”。仅强制执行一项,以避免混乱和混乱。

我的问题是:对于“ element”或“
attribute”指令,哪种限制更好或更受欢迎?我的主要关注点是对于不具备Angular经验的新手,这些人是应用程序代码基础的新手,以减少错误,复制和粘贴行为等。


问题答案:

角度指南指出,只要指令完全控制其模板(即其具有要渲染的模板等),都应使用“ element”限制。

对于属性,他们建议仅在将“行为”添加到现有元素或装饰现有元素时才使用这些属性。

例如,以ng-click指令为例,它用作属性而不是元素,因为click指令只是将click行为添加到某个元素。

另一个示例是ng-repeat指令,它也用作属性而不是元素,因为它将重复使用该元素的元素。

现在,该指南来自相关文档。但是,我不确定元素vs.属性是否会给您“更好”的方法,它更像是一种约定。

现在,如果您必须支持较旧的浏览器,则可能需要考虑使用注释或类指令。

我个人的喜好是只使用属性限制;主要是因为刚接触角度的人在看到限制时会不知所措,这是可以使用的选项的变体。



 类似资料:
  • 问题内容: 我正在尝试使用Angular的“装饰器”功能向某些指令添加功能。假设我的指令名称是myDirective。我的代码如下所示: ]); 我不断收到此消息: 尽我所能,指令在装饰器函数运行时已被注册。任何见识将不胜感激! 问题答案: 本文说明了实际上如何将带指令的decorator()使用。 您只需将“指令”作为名称的后缀即可。因此,在我的示例中,我应该一直在做 http://angula

  • 问题内容: 我想对第3方指令(特别是Angular UI Bootstrap)进行较小的修改。我只是想添加指令的范围: 但是我也想让Bower与Angular-Bootstrap保持同步。运行后,我将覆盖所做的更改。 那么,如何与该Bower组件分开扩展该指令? 问题答案: 解决此问题的最简单方法可能是在您的应用上创建与第三方指令同名的指令。这两个指令都将运行,并且您可以使用属性指定运行顺序(优先

  • 我们还可以通过在侦听器中添加目标来响应外部事件,例如从 或 document。 对于一个指令,这个概念是相当简单的。 将您的指令属性放在哪个模板标记被认为是Host元素。如果我们像上面这样实现HighlightDirective: 在组件的上下文中,Host元素是您通过组件配置中的选择器字符串创建的标记。 对于上面示例中的,组件类的上下文中的Host元素将是<my-text-box>标记。

  • 问题内容: 我想知道如何使用此代码段: 我知道这是关于编译阶段的,但是我不明白这一点,所以简短的解释将是非常感谢。 问题答案: 将另一个指令添加到同一元素的指令: 类似答案: 这是一个小矮人:http ://plnkr.co/edit/ziU8d826WF6SwQllHHQq?p=preview 更清洁的解决方案-完全不使用: 矮人:http ://plnkr.co/edit/jY10enUVm3

  • 在使用Angular 2时,我遇到了一个问题:显然我不能将两个结构指令(,)放在同一个DOM元素上。 在Angular 1中,这曾经是有效的。例如: 当我用Angular 2尝试类似的东西时: 什么都没发生。甚至没有错误。 如果我将< code>ngIf指令放在子元素上,它会工作: 但问题是,我不想为此添加子元素。例如,如果它是一个<代码> 我知道Angular 2仍处于测试阶段,但我想知道它是否

  • 我正在尝试在其他模块中使用我在AppModule内部创建的组件。但我得到了以下错误: msgstr"未捕获(promise中):错误:模板解析错误: “联系人框”不是已知元素: 如果“触点盒”是一个角度组件,则确认它是该模块的一部分 如果“联系人框”是Web组件,则将“自定义元素”模式添加到“@NgModule”。“此组件的架构”以抑制此消息 我将我的页面保存在页面目录中,其中每个页面保存在不同的