我是Angular JS的新手。 我正在做一些带有需要JS的练习演示以及使用路径提供程序在一个定义良好的文件夹结构中的角度路由。
我尝试搜索类似的角度路由器问题,但大多数都没有任何文件夹结构,他们的代码存在于脚本标记中。
我希望有人有耐心快速查看和检查为什么路线提供者似乎没有功能,尽管一切似乎都是正确的。 :)
反正 我有一个index.html,只需要使用源
加载require JS的index.html
<!DOCTYPE html>
<html>
<head>
<title>MyApp</title>
<meta charset="utf-8"/>
<script data-main="assets/require/requireConfig" src="assets/vendor/require.js"></script>
<link rel="stylesheet" href="assets/css/site.css">
</head>
<body>
<ng-view></ng-view>
</body>
</html>
Require JS源如下所示'router'是标准的angular-router。 'myApp'将是我要去引导的应用程序。
Require JS的数据来源
requirejs.config({
baseUrl: 'assets',
paths: {
'myApp': 'require/myApp',
'angular': 'vendor/angular',
'router': 'vendor/angular-route',
'domReady': 'vendor/dom-ready'
},
//Shim is also used to specify if one module must be loaded only after another
//angular does not support AMD out of the box, put it in a shim
shim: {
'angular': {
exports: 'angular'
},
'router': {
deps: ['angular'],
exports: 'router'
}
},
// kick start application
// The ./ represents the base URL given at the top
deps: ['./require/startup']
});
所以现在我要运行startup.js来引导我的app文件 以下是我的startup.js的外观
角度引导
define([
'require',
'angular',
'myApp'
], function (require, angular) {
'use strict';
require(['domReady!'], function (document) {
angular.bootstrap(document, ['myApp']);
});
});
最后...... 导致所有问题的路由提供程序在myApp.js
中定义define(['angular','router'], function (angular) {
'use strict';
var myApp = angular.module('myApp', ["ngRoute"]);
myApp.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/login', {
templateUrl: '../../modules/login/login.html'
});
$routeProvider.when('/home', {
templateUrl: '../../modules/home/homepage.html'
});
}]);
});
好的,我在nginx服务器上运行应用程序。
http://localhost/login
OR
http://localhost/home
不会指示我在模板中指定的必需页面。
然而
如果我指定“$ routeProvider.otherwise”,它总是会重定向到它。
如果我将$ routeProvider.when(“/ login”)更改为 $ routeProvider.when(“/”),路由器打开登录页面但是 抱怨没有与指定视图关联的控制器。 (因此我的结论是模板URL指向正确)
那么,为什么路由提供商会出现这种奇怪的行为? 我不明白吗?