代码之家  ›  专栏  ›  技术社区  ›  htafoya

角度JS-模块。控制器参数[重复]

  •  1
  • htafoya  · 技术社区  · 7 年前

    我是Angular JS新手,在一个教程中,他们提出了创建控制器的方法:

    angular.module('app', [])
      .controller('TodoController', ['$scope', function ($scope) {
        $scope.todos = [
          { title: 'Learn Javascript', completed: true },
          { title: 'Learn Angular.js', completed: false },
          { title: 'Love this tutorial', completed: true },
          { title: 'Learn Javascript design patterns', completed: false },
          { title: 'Build Node.js backend', completed: false },
        ];
      }]);
    

    我想了解每个参数是什么:

    • 大堆
      • “$scope”
      • 作用

    但这是什么 '$scope'

    我可以在阵列中发送更多参数吗?

    3 回复  |  直到 7 年前
        1
  •  2
  •   Koushik Chatterjee    7 年前

    在数组中,参数(字符串)是(不包括最后一个,是的,这是构造函数)需要按数组中的顺序注入的依赖项,这些依赖项将在控制器(即构造函数)的实现中以相同的顺序传递。

    $scope 是一个对象,用于维护与视图的绑定,其内容在视图和控制器中都可用。它是由 $new 方法( $rootScope 然后是层次结构),无论何时将其注入新控制器,都需要创建该控制器的实例。

        2
  •  1
  •   kkalamarski    7 年前

    angular.controller('TodoController', ['$scope', function ($scope) { ... }])
    

    因此,缩小后的上述代码将如下所示:

    angular.controller("TodoController",["$scope",function(o){...}]);
    

    它仍然可以通过angular的依赖注入算法读取。

        3
  •  1
  •   Ashish    7 年前

    第一个参数是控制器名称。第二个数组中,数组中的最后一个元素是控制器函数,其他元素是依赖项。

    除非不缩小代码(隐式注释),否则可以在不传递数组的情况下创建控制器

    仔细的 :如果你计划缩小代码,你的服务名称将被重命名并破坏你的应用程序。

    请检查创建控制器或服务的三种方法。 https://docs.angularjs.org/guide/di