模块

时间:2016-01-19 13:54:30

标签: javascript angularjs dependency-injection typescript

我有关于角度依赖注入机制的问题。 我在独立模块中编写了一个指令,它在数据表上做了一些巧妙的事情。我使用的是TypeScript,我的指令如下所示:

export class MdListControls implements angular.IDirective {
  public templateUrl = "/app/templates/mdListControls.html";
  public static instance(): any {
    return new MdListControls();
  };

  public restrict = 'E';
  public transclude = true;
  public replace = true;
  public scope = {
    grid: '=',
  };
  public controller = "mdListControlsController"
  public controllerAs = "vm";

  public link = function (scope: angular.IScope, element: angular.IAugmentedJQuery, attrs: angular.IAttributes) {

  };
}

我的控制器看起来像这样:

export class MdListControlsController { 
  static $inject = ['scope']
  constructor($scope: angular.IScope){
    //Setup the constructor
  }
  //Here goes the controller Logic
}

我在新模块中注册指令和控制器,如下所示:

angular.module("base.directives.mdListControls", [])
  .controller("mdListControlsController", MdListControlsController)
  .directive("mdListControls", function () { return MdListControls.instance() });

但是,一旦我运行应用程序,一旦加载指令,我会收到以下错误:

Argument 'mdListControlsController;' is not a function, got undefined

这首先看起来不像依赖注入的问题。但是当我在应用程序本身注册控制器时(它会注入" base.directives.mdListControls"模块)如此

app.controller("mdListControlsController", MdListControlsController);  

一切正常,控制器正确地注入指令。

有谁知道我在这里做错了什么? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

在您的MdListControls类中,尝试提供控制器类,而不是控制器名称。

...    
public scope = {
    grid: '=',
  };
public controller = MdListControlsController
public controllerAs = "vm";
...