$ controller的"locals"参数有什么作用?

Ada*_*ner 12 angularjs

在Angular中,$controller有两个参数 - constructorlocals.

文档

文档基本上只是说:

  1. locals 是一个对象.
  2. "Controller的注册本地人."

但我仍然不明白它的作用.任何人都可以详细说明吗?

New*_*Dev 10

"Locals"允许您将注射剂定义到控制器中 - 即它定义了$injector可以仅为该控制器定位的对象(.factory例如,与可以定义的应用程序范围的注射剂相对).

最好的例子是一个例子:

var controller = $controller("Controller1", {
   foo: {
     v: "I am foo"
   }
});
Run Code Online (Sandbox Code Playgroud)

然后,您的实际控制器可以注入foo:

.controller("Controller1", ["$scope", "foo", function($scope, foo){
   $scope.fooVal = foo.v;
}]);
Run Code Online (Sandbox Code Playgroud)

您需要$controller在代码中直接使用这是一种非常罕见的情况(单元测试除外)- 这是一个奇怪的例子,您可以.然而,这通过ui-routerng-route定义具有"已解决"值的状态/路由的控制器来使用.