Angular 1.5使用transclude或不使用transclude

时间:2016-11-23 11:52:48

标签: javascript angularjs

关于在角1.5.8分量内转换的问题,以及它的用途。

以下是一些代码示例;

var app = angular.module('app', [])

function AccordionController () {
  var self = this;
  // add panel
  self.addPanel = function(panel) {
    // code to add panel
  }

  self.selectPanel = function() {
    //code to select panel
  }
}

// register the accordion component
app.component('accordion', {
  template: '<!---accordion-template-->',
  controller: AccordionController
}

function AccordionPanelController () {
  // use parents methods here
  var self = this;

  // add panel
  self.parent.addPanel(self);

  // select panel
  self.parent.selectPanel(self);
}

// register the accordion-panel component
app.component('accordionPanel', {
  // require the parent component
  // In this case parent is an instance of accordion component
  require: {
    'parent': '^accordion',
  template: '<!---accrodion-panel-template-->',
  controller: AccordionController
}

我的问题是,最好使用transclude将所有相关面板嵌套在父级中,或者将数据数组传递给父级,这将根据使用绑定传入内部的数组循环所需数量的面板。

由于

//添加了

非常感谢您的回复,我可能需要转换的一个例子是以下代码

<modal modal-id="editCompany" title="Edit Company"> <company-form company="$ctrl.company"></company-form> </modal> 

这里我们有一个模态组件,其中可能包含其他各种组件,在上面的示例中,我正在添加公司表单,但这可能是一个联系表单。还有另一种方法吗?

2 个答案:

答案 0 :(得分:0)

我非常广泛地使用角度。管理和显示大量数据的两个企业工具,数十个交互式小部件模块,所有这些。

从来没有,我曾与转录有任何关系。在工作中,我们被明确告知不要使用它(链接功能)。我认为这是一件好事,而Angular 2的表现似乎并非完全没有理由。

我会使用迭代来布置所需数量的项目。在工作中,这不是一个选择,因为转换不是一个选择。

答案 1 :(得分:0)

在组件架构中使用transclude的事情是,它在视觉上打破了单一责任的概念和对架构的混淆。

<html>
  <navigation></navigation>
  <accordion>
    <accordion-panel></accordion-panel>
  </accordion>
  <footer></footer>
</html>

在此示例中,您知道您的页面有导航菜单,手风琴和页脚。但是在索引级别(或根组件),你不想知道/看到手风琴包含什么。

因此,accordion-panel组件应仅出现在其直接父组件中。

至于你的另一个问题,通过使用requireattributes,您可以传递一组面板,您可以在手风琴组件中使用ng-repeat进行迭代。

app.component('accordion', {
  template: `<accordion-panel ng-repeat="..."></accordion-panel>`,
  controller: AccordionController
}