javascript - Angular 1.5 使用 transclude 或不使用 transclude

标签 javascript angularjs

关于 Angular 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
}

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

谢谢

//已添加

非常感谢您的回复,我有一个可能需要嵌入的示例,在下面的代码中

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

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

最佳答案

我非常广泛地使用 Angular。两个管理和显示大量数据的企业工具、数十个交互式小部件模块等等。

我从来没有和 transclude 有过任何关系。在工作中,我们被明确告知不要使用它(也是链接函数)。我认为这是一件好事,从 Angular 2 的结果看来,这种想法并非完全没有道理。

我会通过迭代来布置所需数量的项目。在工作中这不会是一个选择,因为嵌入不会是一个选择。

关于javascript - Angular 1.5 使用 transclude 或不使用 transclude,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40763812/

相关文章:

javascript - 如何在 angularjs 中将 ng-class 与服务中的 bool 值一起使用?

javascript - 如何正确观察元素外的点击?

javascript - Django 和静态网站

javascript - 为什么这个 Angular Directive(指令)在加载之前会滞后?

javascript - 如何使用php在两个时间值之间减去?

javascript - 查明提交的是哪个 html 表单

javascript - 当某些 promise 失败时如何继续 $q.all()

angularjs - Angular : how to create navigation menu where active class gets toggled on click?

javascript - 事件多次触发

javascript - 如果输入文本为空,如何隐藏 <div> </div>