Angularjs 将数据动态传递到指令';s转移控制器

Angularjs 将数据动态传递到指令';s转移控制器,angularjs,Angularjs,我有一个针对单个弹出元素的指令。根据点击的数百个元素中的哪一个,我需要在弹出窗口显示时向其传递不同的数据。使用服务存储/获取数据似乎是一种旁敲侧击。将数据存储在我的顶级控制器中,并允许弹出式控制器继承,这看起来像是糟糕的封装。我希望在指令中有一个隔离作用域,并让弹出控制器继承它。这似乎不起作用。有什么想法吗?$broadcast是我唯一的选择吗?我假设您正在使用AngularJS 1.x。我认为指令转换是你想要的。转换提供了一种在指令的内容区域中包含绑定到父控制器的标记的方法 看看这张照片,这张

我有一个针对单个弹出元素的指令。根据点击的数百个元素中的哪一个,我需要在弹出窗口显示时向其传递不同的数据。使用服务存储/获取数据似乎是一种旁敲侧击。将数据存储在我的顶级控制器中,并允许弹出式控制器继承,这看起来像是糟糕的封装。我希望在指令中有一个隔离作用域,并让弹出控制器继承它。这似乎不起作用。有什么想法吗?$broadcast是我唯一的选择吗?

我假设您正在使用AngularJS 1.x。我认为指令转换是你想要的。转换提供了一种在指令的内容区域中包含绑定到父控制器的标记的方法

看看这张照片,这张照片是从

指令('pane',函数(){ 返回{ 限制:'E', 排除:{ '标题':'窗格', “body”:“paneBody”, “页脚”:“paneFooter” }, 模板:“”+ “后备标题”+ '' + “后备页脚”+ '' };

{{text}}

Pane是指令。请注意,窗格标题和窗格正文中包含的内容是针对父控制器编译的,但显示在指令标记的ng transclude部分中


您应该能够使用它将自定义数据输入到弹出窗口中,而无需服务或$broadcast。

我假设您正在使用AngularJS 1.x。我认为您正在寻找的是指令转换。转换提供了一种将绑定到父控制器的标记包含在指示

看看这张照片,这张照片是从

指令('pane',函数(){ 返回{ 限制:'E', 排除:{ '标题':'窗格', “body”:“paneBody”, “页脚”:“paneFooter” }, 模板:“”+ “后备标题”+ '' + “后备页脚”+ '' };

{{text}}

Pane是指令。请注意,窗格标题和窗格正文中包含的内容是针对父控制器编译的,但显示在指令标记的ng transclude部分中


您应该能够使用此功能将自定义数据输入弹出窗口,而无需服务或$broadcast。

我没有尝试将属性中的数据传递到控制器的作用域。我尝试将数据从指令函数本身传递到控制器的作用域。我是否可以将指令闭包的本地对象添加到transclude列表?我没有试图将数据从属性传递到控制器的作用域。我试图将数据从指令函数本身传递到控制器的作用域。我可以将指令闭包的本地对象添加到转移列表吗?
 .directive('pane', function() {
    return {
      restrict: 'E',
      transclude: {
        'title': '?paneTitle',
        'body': 'paneBody',
        'footer': '?paneFooter'
      },
      template: '<div style="border: 1px solid black;">' +
                  '<div class="title" ng-transclude="title">Fallback Title</div>' +
                  '<div **ng-transclude="body"**></div>' +
                  '<div class="footer" **ng-transclude="footer"**>Fallback Footer</div>' +
                '</div>'
    };

<div ng-controller="ExampleController">
  <input ng-model="title" aria-label="title"> <br/>
  <textarea ng-model="text" aria-label="text"></textarea> <br/>
  <pane>
    <pane-title><a ng-href="{{link}}">{{title}}</a></pane-title>
    <pane-body><p>{{text}}</p></pane-body>
  </pane>
</div>