【问题标题】:AngularJS Directive Transclude parent scopeAngularJS 指令 Transclude 父范围
【发布时间】:2017-08-22 08:54:30
【问题描述】:

我正在处理一个指令,并且我正在使用 transclude,因此在其中使用了指令使用的 inner element

假设这是我的指令观点

<div>
  <div ng-repeat="opt in options">
    <ng-transclude></ng-transclude>
  </div>
</div>

指令

app.directive("myDirective", function(){
    return {
        restrict: "E",
        transclude: true,
        templateUrl: 'my-directive.html',
        scope: {
          options: '='
        }
    };
  });

还有一个简单的用法:

<my-directive options="someOptions">
     <p>{{someObject[$parent.opt]}}</p>
</my-directive>

这很好用。我对这个解决方案的问题是 $parent.opt 不是很可读和清晰...... 还有其他选择吗?

谢谢

【问题讨论】:

    标签: angularjs angularjs-scope angularjs-ng-transclude


    【解决方案1】:

    您的指令似乎是一个非常具体的指令。
    将父级也传递给指令怎么样?

    <my-directive options="someOptions" object="someObject"></my-directive>
    

    在指令中:

    <div>
      <div ng-repeat="opt in options">
        <p>{{object[opt]}}</p>
      </div>
    </div>
    

    然后在你的隔离作用域声明中添加object: '&lt;'

    【讨论】:

    • 这个解决方案是因为你的指令中有一个ng-repeat,它总是需要一个父对象/数组。
    • 确实如此。 “结构”背后的原因是试图隔离不同的部分。我不能真正使用该对象并绑定它。不是为了我想要达到的。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多