我使用带有需要js的角度js来制作单个页面模板。 一切正常,接受一件事。当我尝试在$ routeProvider中定义控制器名称时,它显示错误:
错误:[ng:areq] http://errors.angularjs.org/1.4.8/ng/areq?p0=SignIn&p1=not%20aNaNunction%2C%20got%20undefined
我将这些文件分开:
rootfolder
js
-require.js
-angular.min.js
-angular-route.js
-main.js
-app.js
-signin.js
-signup.js
index.php
sign_in.php
sign_up.php
我的代码:
Main.js
require.config({
baseUrl: "./js",
paths: {
'angular': 'angular.min',
'angularRoute': 'angular-route'
},
shim: {
'angular' : { exports : 'angular' },
'angularRoute' : { deps : ['angular'] }
},
deps: ['app']
});
App.js
define(['angular','angularRoute'], function (angularRoute) {
var app = angular.module('webapp', ['ngRoute']);
app.config(['$routeProvider',
function($routeProvider) {
$routeProvider.
when('/signin', {
templateUrl: 'sign_in.php',
controller: 'SignIn'
}).
when('/signup', {
templateUrl: 'sign_up.php',
controller: 'SignUp'
}).
otherwise({
redirectTo: '/signin'
});
}
]);
return app;
});
controller - signin.js
define(['app'], function (app) {
app.controller('SignIn', function ($scope) {
$scope.message = "Sign in page";
});
});
controller - signup.js
define(['app'], function (app) {
app.controller('SignUp', function ($scope) {
$scope.message = "Sign up page";
});
});
当我在$ routeProvider中定义控制器:'SignIn'或控制器:'SignUp'时,它会显示错误,否则它会正常工作。
答案 0 :(得分:0)
您还需要将requirejs包括signin.js
和signup.js
。您在App.js中的代码不会触发任何requirejs调用来加载这两个文件。
when('/signin', {
templateUrl: 'sign_in.php',
controller: 'SignIn'
})
只会告诉AngularJS在导航到/ signin后尝试实例化名为'SignIn'的控制器。但是,这将 not 导致加载signin.js文件。
确保您的最外面的模块也依赖于signin
和signup
。