这段代码可以工作但不会缩小......我该怎么办? 我收到此错误错误:
$注射器:strictdi 需要明确的注释
// app.js
angular
.module('app', [route, 'templates']);
angular
.module('app')
.config(config);
function config($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: 'home.html',
controller: 'HomeController',
controllerAs: 'vm'
});
$locationProvider.html5Mode(true);
}
angular
.module('app')
.controller('HomeController', HomeController);
function HomeController() {
var vm = this;
vm.header = 'Home';
}
// home.html
{{ vm.header }}
答案 0 :(得分:3)
Angular尝试通过参数名称隐式加载依赖项,只要参数名称与要加载的依赖项相同,它就可以正常工作。
例如,
function config($routeProvider, $locationProvider) {
...
}
这将触发angular以使用$ routeProvider和$ locationProvider注入函数但是如果你将代码缩小到这个会发生什么:
function config(a, b) {
...
}
Angular现在会尝试使用a和b(不存在)注入函数。因此,您需要明确告诉angular要注入的依赖项。您可以使用内联括号表示法来执行此操作:
// bracket notation
angular
.module('app')
.config(['$routeProvider', '$locationProvider', config]);
function config($routeProvider, $locationProvider) {
...
}
...或者使用$ inject属性:
// $inject property
angular
.module('app')
.config(config);
config.$inject = ['$routeProvider', '$locationProvider'];
function config($routeProvider, $locationProvider) {
...
}
答案 1 :(得分:0)
由于您使用的是严格模式(最常见的是'在代码中使用严格的'),您必须明确注入依赖项。
你可以这样做
config.$inject = [$routeProvider, $locationProvider];
答案 2 :(得分:0)
你可以试试这个
angular
.module('app')
.config(config);
config.$inject = ['$routeProvider','$locationProvider'];
function config($routeProvider, $locationProvider) {
$routeProvider
.when('/', {
templateUrl: 'home.html',
controller: 'HomeController',
controllerAs: 'vm'
});
$locationProvider.html5Mode(true);
}
})();
(function () {
'use strict';
angular
.module('plunker')
.controller('HomeController',HomeController);
HomeController.$inject = [];
function HomeController() {
var vm = this;
}
})();