Angularjs使用$inject';行不通
我对AngularJs代码进行了巨大的修改以改进它。我在寻找,发现它非常有趣,所以我改变了我的代码,以遵循thos指南 当我到达路由器配置时,我无法使它工作。 如果我像下面的代码一样使用Angularjs使用$inject';行不通,angularjs,Angularjs,我对AngularJs代码进行了巨大的修改以改进它。我在寻找,发现它非常有趣,所以我改变了我的代码,以遵循thos指南 当我到达路由器配置时,我无法使它工作。 如果我像下面的代码一样使用.config,一切正常 angular .module('agApp') .config( ['$stateProvider', '$urlRouterProvider', '$locationProvider', function ($stateProvider, $urlRouterProvider, $
.config
,一切正常
angular
.module('agApp')
.config(
['$stateProvider', '$urlRouterProvider', '$locationProvider',
function ($stateProvider, $urlRouterProvider, $locationProvider) {
$urlRouterProvider.when("/", "/First");
$urlRouterProvider.when("", "/First");
$urlRouterProvider.otherwise("/First");
$stateProvider
.state('first', {
url: "/First",
views: {
"main": {
templateUrl: "app/component/first.html",
controller: 'FirstController',
controllerAs: 'vm'
}
}
})
.state('second', {
url: "/Second",
views: {
"main": {
controller: 'SecondController',
controllerAs: 'vm',
templateUrl: "app/component/second.html"
}
}
})
}]);
但当我尝试使用指南中推荐的代码时,如下所示:
angular
.module('agApp')
.config('ConfigRouter', ConfigRouter);
/* @ngInject */
function ConfigRouter($locationProvider,$stateProvider,$urlRouterProvider) {
$urlRouterProvider.when("/", "/First");
$urlRouterProvider.when("", "/First");
$urlRouterProvider.otherwise("/First");
$stateProvider
.state('first', {
url: "/First",
views: {
"main": {
templateUrl: "app/component/first.html",
controller: 'FirstController',
controllerAs: 'vm'
}
}
})
.state('second', {
url: "/Second",
views: {
"main": {
controller: 'SecondController',
controllerAs: 'vm',
templateUrl: "app/component/second.html"
}
}
})
}
function ConfigRouter(a,b,c){c.when( [.... rest of the code...] ),ConfigRouter.$inject=["$locationProvider","$stateProvider","$urlRouterProvider"],
然后它停止工作,我不断得到这个错误:
无法实例化模块agApp,原因是:错误:[ng:areq]参数“fn”不是函数,获取字符串 我会注意正确的注入(至少,我认为我这样做了),因为输出缩小的代码如下所示:
angular
.module('agApp')
.config('ConfigRouter', ConfigRouter);
/* @ngInject */
function ConfigRouter($locationProvider,$stateProvider,$urlRouterProvider) {
$urlRouterProvider.when("/", "/First");
$urlRouterProvider.when("", "/First");
$urlRouterProvider.otherwise("/First");
$stateProvider
.state('first', {
url: "/First",
views: {
"main": {
templateUrl: "app/component/first.html",
controller: 'FirstController',
controllerAs: 'vm'
}
}
})
.state('second', {
url: "/Second",
views: {
"main": {
controller: 'SecondController',
controllerAs: 'vm',
templateUrl: "app/component/second.html"
}
}
})
}
function ConfigRouter(a,b,c){c.when( [.... rest of the code...] ),ConfigRouter.$inject=["$locationProvider","$stateProvider","$urlRouterProvider"],
在丑陋过程中,我使用的是ngAnnotate
,顺序如下:concat
,ngAnnotate
,最后是uglify
我是不是遗漏了什么?我的代码可能会发生什么变化我是否需要任何额外的文件来启用
$inject
我第一次尝试这样构造我的AngularJ。顺便说一句,控制器的功能不受影响(也因为没有注入,只有一个简单的函数和名称定义),当我可以运行应用程序时,其余的都正常工作,当我尝试使用$inject时问题就开始了。错误说明了一切:你提供了一个字符串作为参数,而它应该是一个函数。这是因为
config
块没有名称。一定是这样
angular
.module('agApp')
.config(ConfigRouter);
错误说明了一切:您提供了一个字符串作为参数,而它应该是一个函数。这是因为
config
块没有名称。一定是这样
angular
.module('agApp')
.config(ConfigRouter);
好的,我这样做是因为控制器的工作方式,这是我在配置中使用的语法。但我要试试这个。谢谢,我之所以这样做是因为控制器的工作方式,这就是我在配置中使用的语法。但我要试试这个。谢谢