AngularJS ng-view 未显示路由页面
AngularJS ng-view not showing routed pages
ng-view 未显示页面,路由似乎不起作用,但它正在浏览器 console/network 中加载 angular-route。min.js。
文件结构是文件夹-> css、字体、js、页面。根目录中有 2 个文件,它们是 app.js 和 index.html,在页面文件夹中还有 2 个文件,它们是应该添加到的 main.html 和 second.html ng-view 部分但不会加载。
当单击 link 以获得 main.html 内容时,它会返回 http://127.0.0.1/main 并完全忽略 /pages 文件夹
**更新代码,第一个页面加载了它的内容,但第二个页面没有,控制台中没有错误,所以我的 href 路径可能有误?
Header 脚本
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script>
<script src="//code.angularjs.org/1.6.1/angular-route.min.js"></script>
<script src="app.js"></script>
HTML
<div class="row">
<a href="#">Main Content</a>
<a href="#/second">Second Content</a>
</div>
<div class="row">
<div class="col-md-12">
<div ng-view></div>
</div>
</div>
<hr>
</div>
JS
var myApp = angular.module('myApp', ['ngRoute']);
myApp.config(function($routeProvider) {
$routeProvider
.when('/', {
templateURL: 'pages/main.html',
controller: 'mainController'
})
.when('/second', {
templateURL: 'pages/second.html',
controller: 'secondController'
})
});
myApp.controller('mainController', ['$scope', function($scope) {
}]);
myApp.controller('secondController', ['$scope', '$log', function($scope, $log) {
}]);
.when('/main', {
templateURL: 'pages/main.html',
controller: 'mainController'
})
或
使用此 url 访问主页:
http://127.0.0.1/
它应该可以工作,因为您没有在配置中为 main 设置路由。
使用 templateUrl
而不是 templateURL
。
在你的html中使用#/main
。
不要使用拖车ng-views
JS代码
var myApp = angular.module('myApp', ['ngRoute']);
myApp.config(function($routeProvider) {
$routeProvider
.when('/main', {
templateUrl: 'main.html',
controller: 'mainController'
})
.when('/second', {
templateUrl: 'second.html',
controller: 'secondController'
})
});
myApp.controller('mainController', ['$scope', function($scope) {
$scope.name = "world"
}]);
myApp.controller('secondController', ['$scope', '$log', function($scope, $log) {
}]);
HTML代码
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
<script src="//code.angularjs.org/1.4.0/angular-route.min.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="mainController">
<p>Hello {{name}}!</p>
<div class="row">
<a href="#/main">Main Content</a>
<a href="#/second">Second Content</a>
</div>
<div class="row">
<div class="col-md-12">
<div ng-view></div>
</div>
</div>
<hr>
</body>
</html>
这里正在工作plunker
编辑
请注意我使用的是 angular 版本 1.4.0。如果你想使用 angular 1.6.1,他们已经更改了用于 $location hash-bang URL 的默认 hash-prefix 现在是 ('!')
而不是 ('')
所以你需要在你的配置阶段添加这个。
myApp.config(['$locationProvider', function($locationProvider) {
$locationProvider.hashPrefix('');
}]);
现在它也适用于 angular 1.6.1
ng-view 未显示页面,路由似乎不起作用,但它正在浏览器 console/network 中加载 angular-route。min.js。 文件结构是文件夹-> css、字体、js、页面。根目录中有 2 个文件,它们是 app.js 和 index.html,在页面文件夹中还有 2 个文件,它们是应该添加到的 main.html 和 second.html ng-view 部分但不会加载。
当单击 link 以获得 main.html 内容时,它会返回 http://127.0.0.1/main 并完全忽略 /pages 文件夹
**更新代码,第一个页面加载了它的内容,但第二个页面没有,控制台中没有错误,所以我的 href 路径可能有误?
Header 脚本
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script>
<script src="//code.angularjs.org/1.6.1/angular-route.min.js"></script>
<script src="app.js"></script>
HTML
<div class="row">
<a href="#">Main Content</a>
<a href="#/second">Second Content</a>
</div>
<div class="row">
<div class="col-md-12">
<div ng-view></div>
</div>
</div>
<hr>
</div>
JS
var myApp = angular.module('myApp', ['ngRoute']);
myApp.config(function($routeProvider) {
$routeProvider
.when('/', {
templateURL: 'pages/main.html',
controller: 'mainController'
})
.when('/second', {
templateURL: 'pages/second.html',
controller: 'secondController'
})
});
myApp.controller('mainController', ['$scope', function($scope) {
}]);
myApp.controller('secondController', ['$scope', '$log', function($scope, $log) {
}]);
.when('/main', {
templateURL: 'pages/main.html',
controller: 'mainController'
})
或 使用此 url 访问主页: http://127.0.0.1/ 它应该可以工作,因为您没有在配置中为 main 设置路由。
使用 templateUrl
而不是 templateURL
。
在你的html中使用#/main
。
不要使用拖车ng-views
JS代码
var myApp = angular.module('myApp', ['ngRoute']);
myApp.config(function($routeProvider) {
$routeProvider
.when('/main', {
templateUrl: 'main.html',
controller: 'mainController'
})
.when('/second', {
templateUrl: 'second.html',
controller: 'secondController'
})
});
myApp.controller('mainController', ['$scope', function($scope) {
$scope.name = "world"
}]);
myApp.controller('secondController', ['$scope', '$log', function($scope, $log) {
}]);
HTML代码
<!DOCTYPE html>
<html ng-app="myApp">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.0/angular.min.js"></script>
<script src="//code.angularjs.org/1.4.0/angular-route.min.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="mainController">
<p>Hello {{name}}!</p>
<div class="row">
<a href="#/main">Main Content</a>
<a href="#/second">Second Content</a>
</div>
<div class="row">
<div class="col-md-12">
<div ng-view></div>
</div>
</div>
<hr>
</body>
</html>
这里正在工作plunker
编辑
请注意我使用的是 angular 版本 1.4.0。如果你想使用 angular 1.6.1,他们已经更改了用于 $location hash-bang URL 的默认 hash-prefix 现在是 ('!')
而不是 ('')
所以你需要在你的配置阶段添加这个。
myApp.config(['$locationProvider', function($locationProvider) {
$locationProvider.hashPrefix('');
}]);
现在它也适用于 angular 1.6.1