所以我在GitHub(https://github.com/spring-projects/spring-boot)上找到了一个练习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);
});
}; }]);
当我尝试这样做时,我的代码不像原始代码那样工作。我不知道它是否是语法错误,或者在不同样式的应用程序中是否存在一些重要差异。谁能告诉我为什么这不起作用?
答案 0 :(得分:0)
我在两个代码示例中看到的唯一区别是模块的名称。由于您没有提供错误消息,我假设您没有在模块应该注入的所有文件中将myApp.controllers
更改为myApp.controllerModule
。
答案 1 :(得分:0)
您可以使用ng-annotate从参数名称自动生成这些注释。这是大多数项目应该使用的。手动复制依赖项不太实用。