当前位置: 首页 > 面试题库 >

在指令中使用“要求”来要求父控制器

郑哲彦
2023-03-14
问题内容

我尝试“要求”一个父控制器(不是指令),但是AngularJS返回一个异常。代码是这样的:

app.controller("myController", function ($scole) {
    ...
});

app.directive("myDirective", function ($q) {
    return {
        require: "^myController",
        template: "",
        link: function (scope, element, attrs, myCtrl) {
            ...
        }
    };
});

HTML

<div ng-controller="myController as myCtrl">
    ...
        <div my-directive>...</div>
    ...
</div>

错误

错误:找不到指令’myDirective’所需的[$ compile:ctreq]控制器’myController’!

为什么?
也许,require属性必须引用 指令 的控制器?

谢谢


问题答案:

要求在另一个指令中使用其他指令控制器,请参考以下示例

var App =  angular.module('myApp',[]);

//one directive

App.directive('oneDirective',function(){

  return {
      restrict: 'E',
      controller:function($scope){

       $scope.myName= function(){
            console.log('myname');
          }

         }
    }

});

   //two directive

  App.directive('twoDirective',function(){

  return {
      require:'oneDirective' //one directive used,
      link : function(scope,ele,attrs,oneCtrl){
         console.log(oneCtrl.myName())
     }

   }

  })


 类似资料:
  • 问题内容: 谁能告诉我如何在另一个angularJS指令中包含一个指令中的控制器。例如我有以下代码 通过所有帐户,我应该能够使用addProduct指令访问控制器,但是我不能。有更好的方法吗? 问题答案: 我很幸运,并在对问题的评论中回答了这个问题,但是为了完整起见,我发布了完整的答案,因此我们可以将此问题标记为“已回答”。 这取决于您要通过共享控制器来完成的工作。您可以共享同一控制器(尽管实例不

  • 问题内容: 我可能会考虑将其完全倒退,但是我正在尝试制作三个嵌套指令,让它们称为:屏幕,组件和小部件。我希望窗口小部件能够触发组件中的某些行为,从而触发屏幕中的某些行为。所以: 我可以使用来在小部件的链接fn中要求父组件,但是如何进一步使组件控制器访问其包含的屏幕呢? 我需要的是WHAT in组件,因此,当您单击小部件的按钮时,它会发出“ screeny!”警报。 谢谢。 问题答案: 您可以通过以

  • 问题内容: 我试图递归地到达父“ box”指令的控制器: 我希望控制器变量在链接函数中,但是我得到了实际box指令的控制器。 所以我的问题是…在这种情况下如何获得对PARENT控制器的访问权限: http://jsfiddle.net/gjv9g/1/ 问题答案: 好,找到了… 如果要获取父元素的控制器,请执行以下操作: 这将返回父指令的控制器,或者返回更高一级的父指令的父指令的控制器。如果您需要

  • 问题内容: 我有以下结构: 在配置内部,我设置了一些变量,这些变量正在使用module.export导出。 我尝试使用以下代码从config.js 运行时检索这些变量: 他们都不工作。我该怎么做才能从另一个文件夹中检索数据? 问题答案: 是 是 是 是

  • 问题内容: 因此,我确实看到了另一个问题:如何在指令UT中模拟所需的指令控制器,这基本上是我的问题,但似乎该线程的答案是“更改设计”。我想确保没有办法做到这一点。我有一个指令声明一个由子指令使用的控制器。我现在正尝试为children指令编写茉莉花测试,但由于它们依赖于控制器,因此我无法让它们在测试中进行编译。看起来是这样的: 子指令: 茉莉花测试: 我没有办法用茉莉花测试子指令吗?如果可以,我会

  • Gradle 1.10 或者 1.11 或者 1.12,并且使用 0.11.1 版本的插件 SDK with Build Tools 要求 19.0.0,有些功能可能需要更新的版本