使用$ inject语法和其他构造函数参数

时间:2014-09-12 15:46:49

标签: angularjs typescript

在这里查看答案:https://stackoverflow.com/a/19272093/2547709

使用$ inject语法,我的控制器最终看起来像这样:

class MyCtrl {

  public static $inject: string[] = ['$scope'];
  constructor($scope){
    // stuff
  }
}
// register the controller
app.controller("MyCtrl", MyCtrl);

我的问题是 - 如果我想将自己的自定义参数传递给构造函数以及任何注入的变量会发生什么?:

class MyCtrl {

  public static $inject: string[] = ['$scope'];
  constructor($scope, customArg){
    // stuff
  }
}
// Now how do I pass customArg in without it complaining?
app.controller("MyCtrl", MyCtrl(customArg)); // Nope

我觉得我错过了一些基本的东西,使用这种语法,你传入.controller()函数的所有东西都必须用angular注册,所以我不应该试图传入自定义参数?或者我可以传入任意值/对象吗?如果是这样怎么样?

2 个答案:

答案 0 :(得分:3)

  

customArg

如果 angular 要调用构造函数,则无法传入自定义参数。你可以注册Angular的其他东西,例如服务,工厂, angular 的值(常量)将为您传递给控制器​​。

更多:https://www.youtube.com/watch?v=Yis8m3BdnEM&hd=1

答案 1 :(得分:0)

对不起,答案我没有足够的评论意见。

我有完全相同的情况,这是我的情况:

return view('welcome', ['projects' => $projects]);

看起来我必须在每个派生类上重复注入,并传递超级......如此冗余