我见过人们在参数中使用数组
[HttpPost]
[Route("update")]
[ValidateAntiForgeryToken]
public ActionResult Update(int id)
{
try
{
Update(id);
}
catch (Exception exception)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest, exception.Message);
}
}
另一方面,我也看到了以下代码,两者都在工作
myAngularApp.controller("nameOfController", ["$firstDependency", "$secondDependency", function ($firstDependency, $secondDependency) {
// code here
}]);
在角度文档中,我看到了数组的使用。为什么角度允许后一种方法?哪一个绝对推荐?事实上,在角度文档示例中,指令不使用数组。
答案 0 :(得分:2)
$ injector必须知道要注入函数的参数。有三种不同的方法可以告诉注射器注射什么。
选项1:向函数添加名为$ inject的属性:
FN。$注入= [ '$ firstDependency', '$ secondDependency']
选项2:使用类似注释的数组:
['$ firstDependency','$ secondDependency',function(x,y){...}]
选项3:如果没有$ inject属性且没有注释,AngularJS使用函数参数:
function($ firstDependency,$ secondDependency){...}。
如果缩小代码,则不能使用第三种替代方法,因为这会更改参数名称。
这三种方法都是合法的,并提供相同的结果。
答案 1 :(得分:1)
我建议使用第一种方法:
myAngularApp.controller("nameOfController", ["$firstDependency", "$secondDependency", function ($firstDependency, $secondDependency) {
// code here
}]);
这是因为您可以使用此方法缩小代码,而不能使用您列出的其他方法。