Angular 路线与 $routeProvider
Angular route with $routeProvider
我试图在开始构建我的应用程序之前了解路由,但它似乎不起作用。
我有一个用于测试的基本应用程序,我在其中创建了 3 个 html 匹配 3 个不同视图的文件,我希望根据路线更改显示的视图。
但我总是看到索引视图。
文件如下:
app.js :
'use strict';
angular.module('BalrogApp', ['ngRoute', 'ui.bootstrap', 'BalrogApp.controllers'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: '../index.html'
})
.when('/requests', {
templateUrl: '../views/requestsList.html'
})
.when('/projects', {
templateUrl: '../views/projectsList.html'
})
.otherwise({
redirectTo: '/lol'
});
}]);
requestsController.js :
'use strict';
var requestsControllerModule = angular.module('BalrogApp.controllers', ['ngRoute', 'ui.bootstrap']);
requestsControllerModule.controller('requestsController', function($rootScope, $scope, $location, $routeParams) {
this.studentName = "Request";
this.studentMark = 75;
});
projectsController.js :
'use strict';
var projectsControllerModule = angular.module('BalrogApp.controllers', ['ngRoute', 'ui.bootstrap']);
projectsControllerModule.controller('projectsController', function($rootScope, $scope, $location, $routeParams) {
this.studentName = "Project";
this.studentMark = 75;
});
html 文件几乎相同,除了一些单词和与每个文件关联的控制器。
以下是 html wiews 之间变化的几行:
index.html :
index view
<div class="row-fluid" ng-controller="requestsController as rc">
<div class="span2">{{rc.studentName}} </div>
</div>
requestsList.html :
Request view
<div class="row-fluid" ng-controller="requestsController as r">
<div class="span2">{{r.studentName}} </div>
</div>
projectsList.html
Project view
<div class="row-fluid" ng-controller="projectsController as p">
<div class="span2">{{p.studentName}} </div>
</div>
拜托,无论路线是什么,如果我将“/projects”或“/requests”添加到 url,我将停留在索引视图中。
知道我做错了什么吗?
确保您在 index.html
中设置了 ng-view
属性或元素。如果不存在,路由器将无法工作。
另一个好的做法是在路由器上设置视图控制器,如下所示:
$routeProvider
.when('<route_name>', {
templateUrl: '../<tempate>.html',
controller: '<controller_name>',
controllerAs: 'myController'
})
1. 在你的基础文件上(通常是 index.html),确保你有一个 ng-view
指令用于加载所有 部分 观看次数
2. 您的所有 html 模板都与基本文件位于同一位置吗?如果是,您可以尝试将其设置为 "/index.html"
,而不是将 templateUrl
设置为 "../index.html"
。第一个检查基础文件所在目录之外的 html 文件,而第二个检查在同一目录中
我试图在开始构建我的应用程序之前了解路由,但它似乎不起作用。
我有一个用于测试的基本应用程序,我在其中创建了 3 个 html 匹配 3 个不同视图的文件,我希望根据路线更改显示的视图。
但我总是看到索引视图。
文件如下:
app.js :
'use strict';
angular.module('BalrogApp', ['ngRoute', 'ui.bootstrap', 'BalrogApp.controllers'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider
.when('/', {
templateUrl: '../index.html'
})
.when('/requests', {
templateUrl: '../views/requestsList.html'
})
.when('/projects', {
templateUrl: '../views/projectsList.html'
})
.otherwise({
redirectTo: '/lol'
});
}]);
requestsController.js :
'use strict';
var requestsControllerModule = angular.module('BalrogApp.controllers', ['ngRoute', 'ui.bootstrap']);
requestsControllerModule.controller('requestsController', function($rootScope, $scope, $location, $routeParams) {
this.studentName = "Request";
this.studentMark = 75;
});
projectsController.js :
'use strict';
var projectsControllerModule = angular.module('BalrogApp.controllers', ['ngRoute', 'ui.bootstrap']);
projectsControllerModule.controller('projectsController', function($rootScope, $scope, $location, $routeParams) {
this.studentName = "Project";
this.studentMark = 75;
});
html 文件几乎相同,除了一些单词和与每个文件关联的控制器。
以下是 html wiews 之间变化的几行:
index.html :
index view
<div class="row-fluid" ng-controller="requestsController as rc">
<div class="span2">{{rc.studentName}} </div>
</div>
requestsList.html :
Request view
<div class="row-fluid" ng-controller="requestsController as r">
<div class="span2">{{r.studentName}} </div>
</div>
projectsList.html
Project view
<div class="row-fluid" ng-controller="projectsController as p">
<div class="span2">{{p.studentName}} </div>
</div>
拜托,无论路线是什么,如果我将“/projects”或“/requests”添加到 url,我将停留在索引视图中。
知道我做错了什么吗?
确保您在 index.html
中设置了 ng-view
属性或元素。如果不存在,路由器将无法工作。
另一个好的做法是在路由器上设置视图控制器,如下所示:
$routeProvider
.when('<route_name>', {
templateUrl: '../<tempate>.html',
controller: '<controller_name>',
controllerAs: 'myController'
})
1. 在你的基础文件上(通常是 index.html),确保你有一个 ng-view
指令用于加载所有 部分 观看次数
2. 您的所有 html 模板都与基本文件位于同一位置吗?如果是,您可以尝试将其设置为 "/index.html"
,而不是将 templateUrl
设置为 "../index.html"
。第一个检查基础文件所在目录之外的 html 文件,而第二个检查在同一目录中