此应用包含的内容很少,所以这是一个基本错误。我正在使用ui-router。这就是我在各种文件中得到的结果:
app.module.js:
'use strict';
angular
.module('app', app);
app.$inject = [
'ui.router',
'ngCookies',
'ngSanitize',
];
function app(){}
app.routes.js:
'use strict';
angular
.module('app')
.config(routes);
routes.$inject = ['$stateProvider', '$urlRouterProvider', '$locationProvider'];
function routes($stateProvider, $urlRouterProvider, $locationProvider) {
// Remove # from url
$locationProvider.html5Mode(true);
// Set 404
$urlRouterProvider.otherwise('/404');
// Configure app states
$stateProvider
.state('app', {
abstract: true,
url: '',
templateUrl: 'modules/app/app.html',
controller: 'AppController'
})
}
app.controller.js:
'use strict';
angular
.module('app')
.controller('AppController', AppController);
AppController.$inject = ['$rootScope', '$scope'];
function AppController($rootScope, $scope) {
}
我在页面加载时在控制台中遇到上述错误 - 我错过了什么?
答案 0 :(得分:4)
您在名为$inject
的变量上调用app
,该变量在全局范围内不存在:
angular.module('app', app);
app.$inject = [
'ui.router',
'ngCookies',
'ngSanitize',
];
现在,如果您将模块定义分配给名为app
的变量,它可以工作:
var app = angular.module('app', app);
app.$inject = [
'ui.router',
'ngCookies',
'ngSanitize',
];
接下来是模块定义的签名:
angular.module(name,[requires],[configFn]);
你再次使用一个名为app
的变量(它不存在)你的requires / injectables数组应该在哪里。所以你可以这样做:
var injections = [
'ui.router',
'ngCookies',
'ngSanitize',
];
var app = angular.module('app', injections);
甚至更好:(保持全球范围清晰)
var app = angular.module('app', [
'ui.router',
'ngCookies',
'ngSanitize',
]);
现在你可以剥离:
app.$inject = [
'ui.router',
'ngCookies',
'ngSanitize',
];
但最佳做法是尽可能保持整个全球范围的清洁。因此,您不能将模块分配给变量:
angular.module('app', []);
当您需要配置或附加控制器或指令等时,请致电:
angular.module('app').config();
angular.module('app').controller();
angular.module('app').directive();
或者你可以将它们连在一起:
angular.module('app')
.config()
.controller()
.directive();
另一个提示,在进行配置或创建控制器时,您不必单独注射,您可以这样做:
angular.module('app').config([
'$stateProvider', '$urlRouterProvider', '$locationProvider',
function ($stateProvider, $urlRouterProvider, $locationProvider) {
.....
}
]);
需要使用括号表示法,因此当您缩小脚本时,它不会搞砸您的注射,如果您没有缩小,则可以不用:
angular.module('app').config(
function ($stateProvider, $urlRouterProvider, $locationProvider) {
.....
}
);
我知道你的问题已经解决了,我想我应该清楚一点。祝你好运!
答案 1 :(得分:0)
该模块不喜欢像这样实例化,所以我把它改成了它并且它工作正常:
'use strict';
angular
.module('app', [
'ui.router',
'ngCookies',
'ngSanitize'
];
答案 2 :(得分:0)
首先删除app.module.js中'ngSanitize'后的逗号:
angular
.module('app', [
'ui.router',
'ngCookies',
'ngSanitize'
];