AngularJS:从子指令中要求父指令

尖刺

请考虑这个Plunk

我正在尝试为复杂的指令访问设置测试用例,但是从父指令调用方法时出现错误:

家长指令

app.directive('topParentDirective', [
    '$compile',
    function($compile){
      return {
        restrict: 'E',
        transclude: true,
        template: '<h3>I\'m the parent directive.</h3><div ng-transclude></div>',
        controller: function($scope) {
          $scope.ActivateMe = function(callerName) {
            alert('Parent activated from caller ' + callerName);
          };
        }
      };
    }
]);

子指令

app.directive('interactingChildDirective', [
    '$compile',
    function($compile){
      return {
        scope: {
          name: '@'
        },
        restrict: 'E',
        require: ['^topParentDirective'],
        templateUrl: 'interactingChildDirective.html',
        link: function($scope, $elem, $attrs, $ctrl) {
          var self = {};

          console.log($ctrl);

          $scope.CallTopParent = function() {
            $ctrl.ActivateMe($attrs.name);
          };
        }
      };
    }
]);

InteractingChildDirective.html

包含:

My name is {{name}}, <button ng-click="CallTopParent()">Click me</button>!

Html

<body ng-app="ngApp">
<div ng-controller="myController">
  <top-parent-directive>
    <interacting-child-directive name="Child 1"></interacting-child-directive>
  </top-parent-directive>
</div>
</body>

问题

TypeError: $ctrl.ActivateMe is not a function
    at n.$scope.CallTopParent 

出现这种情况是因为$ ctrl似乎不正确。

我怎样才能解决这个问题?这可能很容易...

那将是烧瓶

它应该是

    controller: function($scope) {
      this.ActivateMe = function(callerName) {
        alert('Parent activated from caller ' + callerName);
      };
    }

因为$ ctrl获得必需的控制器的this

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

从AngularJS中的指令添加指令

来自分类Dev

AngularJS-从子指令访问父指令属性

来自分类Dev

在AngularJS中递归访问父指令的控制器

来自分类Dev

避免在angularjs指令中引用父范围

来自分类Dev

父元素中不包含AngularJS指令

来自分类Dev

为什么我不能要求父指令有子指令?

来自分类Dev

从子指令中调用父指令中的函数

来自分类Dev

AngularJs指令:从模板中的父作用域调用方法

来自分类Dev

在动态生成的AngularJS指令中访问父控制器

来自分类Dev

父指令如何向angularjs中的子指令添加行为

来自分类Dev

在父指令中附加子指令

来自分类Dev

我可以在AngularJS中要求通用父指令吗

来自分类Dev

AngularJS多个指令要求ngModel

来自分类Dev

指令要求中的问号

来自分类Dev

在子指令中调用父指令的功能

来自分类Dev

取决于AngularJS中的父指令,在子伪指令中“需要”

来自分类Dev

无法在AngularJS 1.5组件中要求指令

来自分类Dev

AngularJS在指令中操纵父级的DOM

来自分类Dev

AngularJS-从子指令访问父指令属性

来自分类Dev

AngularJS中的指令内部指令?

来自分类Dev

AngularJs指令:从模板中的父作用域调用方法

来自分类Dev

从子指令访问父“隔离”范围

来自分类Dev

AngularJS:在指令中包装指令

来自分类Dev

我可以在AngularJS中要求通用父指令吗

来自分类Dev

AngularJS:从指令更新父范围

来自分类Dev

AngularJS-从子节点访问父控制器->使用controllerAs表示法的子指令

来自分类Dev

取决于AngularJS中的父指令,在子伪指令中“需要”

来自分类Dev

AngularJS - 如何通过嵌套(自定义)指令从子级到父级传递数据

来自分类Dev

从子指令调用函数并使用父指令中的变量

Related 相关文章

热门标签

归档