一尘不染

角组件:没有模板替换选项?

angularjs

看起来新的AngularJS1.5组件概念中没有“替换”选项(就像用于指令一样)。

如果我想将 表格行 <TR>元素作为组件,您会提出什么建议?就有效的HTML而言,这是不可能的吗?

实际示例:mailBox组件内部具有邮件组件。通过标记,mail-box-component是table,而mail-box是tr。

<mail-box>
    <mail ng-repeat="mail in $ctrl.mails" mail="mail"></mail>
<mail-box>

UPD :有关指令的相关讨论-为什么AngularJS中不推荐使用replace?


阅读 233

收藏
2020-07-04

共1个答案

一尘不染

由于replace:true标志已被弃用,因此不再可行

为什么在AngularJS中不推荐使用replace?

replace:true标志比解决方案提出了更多的问题,因此将其删除。因此,您不能再以这种方式构建指令并提供有效的table-tr-td标记。

但是,有两个原因使它看上去不那么糟糕:

  1. 您可以在不使用表,tr,td等的情况下完成所有想要做的事情,只需使用div,span等元素以及其中的一些CSS

  2. Web组件(指令是首次模拟它们)并不意味着代表标记的这些小片段。他们更多地被认为是实际上在做某事的一个功能齐全的组件。因此,无论您想对tr做什么,都认为值得围绕它构建一个元素指令,但这可能不是。

也许,您可以使用属性指令代替:

<tr my-mail-directive></tr>

而您的my-mail指令对tr元素起到了神奇作用

2020-07-04