Angular指令控制器找不到require

时间:2015-04-28 10:30:14

标签: javascript angularjs angularjs-directive

这是问题所在,我试图通过使用指令渲染子标题来拆分我的html。

在子标题中,我正在做一些逻辑来渲染一些按钮。用于此的所有逻辑都在此视图的控制器中编码。

所以我写了一个指令来为我的子标题创建一个元素:

 angular.module('myApp')
  .directive('subHeader', ['ServiceOne','ServiceTwo',
  function(ServiceOne, ServiceTwo){
    return{
      restrict: 'E',
      require: '^MyCtrl',
      link: function(scope, element, attrs, ctrl){
          console.log(ctrl);

         // Logic for buttons in sub header

      },
      templateUrl: '--here my path to the .html template--'
    };
  }]);

html模板在视图中很好地呈现,所以我尝试在链接方法中移动子标题中存在的逻辑的函数。但我无法记录现有的控制器。

我只是想补充说我需要控制器,因为子标头中的逻辑取决于该控制器重新检索的数据。

我缺少什么或我做错了什么?

1 个答案:

答案 0 :(得分:1)

在指令中我们使用" controller"和" controllerAs"不是"要求"。 "控制器" - 字符串或控制器功能本身中控制器的实际名称。 " controllerAs" - 您可以在html视图中使用的控制器的别名

 angular.module('myApp')
  .directive('subHeader', ['ServiceOne','ServiceTwo',
   function(ServiceOne, ServiceTwo){
    return{
      restrict: 'E',
      controller: 'MyCtrl',
      link: function(scope, element, attrs, ctrl){
        console.log(ctrl);

        // Logic for buttons in sub header

       },
       templateUrl: '--here my path to the .html template--'
    };
 }]);

 angular.module('myApp').controller("MyCtrl", function($scope){
    //Do your stuff
 });

OR

angular.module('myApp')
  .directive('subHeader', ['ServiceOne','ServiceTwo',
   function(ServiceOne, ServiceTwo){
    return{
      restrict: 'E',
      controller: function($scope)(){
       // Do your stuff
      },
      controllerAs: 'MyCtrl',
      link: function(scope, element, attrs, ctrl){
        console.log(ctrl);

        // Logic for buttons in sub header

       },
       templateUrl: '--here my path to the .html template--'
    };
 }]);