Javascript AngularJS:添加依赖项(内联数组与注入)

Javascript AngularJS:添加依赖项(内联数组与注入),javascript,angularjs,spring,dependency-injection,Javascript,Angularjs,Spring,Dependency Injection,因此,我在GitHub()上找到了一个practice Spring Boot项目。该应用程序允许用户创建项目列表及其描述;还有删除列表中项目的功能。该项目试图使用AngularJS向SPA(单页应用程序)展示自己 代码使用注入向定义的控制器和工厂添加依赖项。下面是一个名为“controller.js”的示例类,它使用以下实现: var AppController = function($scope, Item) { Item.query(function(response) {

因此,我在GitHub()上找到了一个practice Spring Boot项目。该应用程序允许用户创建项目列表及其描述;还有删除列表中项目的功能。该项目试图使用AngularJS向SPA(单页应用程序)展示自己

代码使用注入向定义的控制器和工厂添加依赖项。下面是一个名为“controller.js”的示例类,它使用以下实现:

var AppController = function($scope, Item) {
    Item.query(function(response) {
      $scope.items = response ? response : [];
    });

    $scope.addItem = function(description) {
      new Item({
        description: description,
        checked: false
      }).$save(function(item) {
        $scope.items.push(item);
      });
      $scope.newItem = "";
    };

    $scope.updateItem = function(item) {
      item.$update();
    };

    $scope.deleteItem = function(item) {
      item.$remove(function() {
        $scope.items.splice($scope.items.indexOf(item), 1);
      });
    };
  };

  AppController.$inject = ['$scope', 'Item'];
  angular.module("myApp.controllers").controller("AppController", AppController);
现在(如果我错了,请纠正我)有两种其他方法可以向控制器和工厂添加依赖项:

  • 内联数组
  • 隐式注射
  • 我的观点是,我可以接受一个注入了所有依赖项的应用程序,并重写代码,其中控制器和工厂定义将使用内联数组方法添加依赖项。以下是相同的“controller.js”,但使用内联数组:

    angular.module("myApp.controllerModule").controller("AppController", ['$scope', 'Item', function($scope, Item){
    Item.query(function(response) {
        $scope.items = response ? response : [];
    });
    
    $scope.addItem = function(description) {
        new Item({
            description: description,
            checked: false
        }).$save(function(item) {
            $scope.items.push(item);
        });
        $scope.newItem = "";
    };
    
    $scope.updateItem = function(item) {
        item.$update();
    };
    
    $scope.deleteItem = function(item) {
        item.$remove(function() {
            $scope.items.splice($scope.items.indexOf(item), 1);
        });
    }; }]);
    

    当我尝试这样做时,我的代码与原始代码不一样。我不知道这是否是语法错误,或者在不同样式的应用中是否存在一些重要差异。有人能告诉我为什么这不起作用吗?

    我在两个代码示例中看到的唯一区别是模块的名称。由于您没有提供错误消息,我假设您没有将模块应注入的所有文件中的
    myApp.controllers
    更改为
    myApp.controllerModule

    您可以使用参数名自动生成这些注释。这是大多数项目应该使用的。手动复制依赖项不是很实用。

    如果您定义的
    我的代码与原始代码的工作方式不同,这将非常有用。
    有三种注入依赖项的方法:内联数组注释、
    $inject
    属性注释和隐式注释。前两种是小型化安全的。最后一个不是。有关更多信息,请参见。是这样吗??我使用了
    $inject
    符号来表示缩小的代码,它的工作方式很有魅力。你是指任何特殊的缩小过程吗?你是对的。两种方法都可以,但仍建议使用ng注释。更正了答案。