angularjs 1.6.0(现在最新)路由不工作
angularjs 1.6.0 (latest now) routes not working
我期待在 Whosebug 上看到这个问题,但没有。显然我是唯一一个遇到这个问题的人,这个问题在我看来很常见。
我有一个正在处理的基本项目,但路线似乎不起作用,尽管我到目前为止所做的一切似乎都是正确的。
我的 index.html
文件中有这段 html:
<html>
<head ng-app="myApp">
<title>New project</title>
<script src="https://code.angularjs.org/1.6.0/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.0/angular-route.min.js"></script>
<script src="app.js"></script>
</head>
<body>
<a href="#/add-quote">Add Quote</a>
<div ng-view ></div>
</body>
</html>
这是我的 app.js
:
var app = angular.module('myApp', ['ngRoute']);
app.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/add-quote', {
templateUrl: 'views/add_quote.html',
controller: 'QuoteCtrl'
})
.otherwise({ redirectTo: '/' });
}]);
现在,当我访问该页面时,这是我在 url 中得到的内容:
当我点击 Add quote
按钮时,我得到了这个:
这里可能是什么问题?
感谢帮助
只需在 href:
中使用 hashbang #!
<a href="#!/add-quote">Add Quote</a>
由于 aa077e8,用于 $location hash-bang URL 的默认哈希前缀已从空字符串 (''
) 更改为 bang ('!'
)。
如果您真的想要没有哈希前缀,那么您可以通过向您的应用程序添加一个配置块来恢复以前的行为:
appModule.config(['$locationProvider', function($locationProvider) {
$locationProvider.hashPrefix('');
}]);
有关详细信息,请参阅
- AngularJS GitHub Pull #14202 Changed default hashPrefix to '!'
- AngularJS Guide - Migration - aa0077e8
抱歉太过自大但是...这是怎么发布的?这是一个巨大的破坏性错误。 — @MiloTheGreat
The breaking change as by #14202 should be reverted as the reference specification was already officially deprecated #15715
I'm going to close this issue because we haven't got any feedback. Feel free to reopen this issue if you can provide new feedback.
— https://github.com/angular/angular.js/issues/15715#issuecomment-281785369
我无法在 1.6.4 中使用路由,所以我决定使用 angular 1.5.11 并且路由工作正常,尽管我需要在 when(..) 函数中定义所有路由尾随“/”
如果坚持使用旧版本的 angular 是您的选择,那么请考虑它,因为它可以让您省心...
var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {
$routeProvider
.when("/layoutandviewbox", {
templateUrl : "views/layout-and-viewbox.html"
})
.when("/basicshapes", {
templateUrl : "views/basic-shapes.html"
})
.when("/advancedshapes", {
templateUrl : "views/advanced-shapes.html"
})
.when("/groups", {
templateUrl : "views/groups.html"
})
.when("/transformations", {
templateUrl : "views/transformations.html"
})
.when("/effects", {
templateUrl : "views/effects.html"
})
.when("/", {
templateUrl : "views/basic-shapes.html"
});
});
只需将 !
包含到 href
中:
<body>
<a href="#!/add-quote">Add Quote</a>
<div ng-view ></div>
</body>
app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$locationProvider.hashPrefix('');
$routeProvider
.when('/add-quote', {
templateUrl: 'views/add_quote.html',
controller: 'QuoteCtrl'
})
.otherwise({ redirectTo: '/' });
}]);
试试这个可能会有帮助...
在html或查看页面
<body>
<a href="#/Home.html">Home</a>
<div ng-view></div>
</body>
在脚本页面中
var app=angular
.module('myModule',['ngRoute'])
.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/Home', {
templateUrl: 'FolderName/Home.html',
controller: 'homeCtr'
})
$locationProvider.hashPrefix('');
});
我期待在 Whosebug 上看到这个问题,但没有。显然我是唯一一个遇到这个问题的人,这个问题在我看来很常见。
我有一个正在处理的基本项目,但路线似乎不起作用,尽管我到目前为止所做的一切似乎都是正确的。
我的 index.html
文件中有这段 html:
<html>
<head ng-app="myApp">
<title>New project</title>
<script src="https://code.angularjs.org/1.6.0/angular.min.js"></script>
<script src="https://code.angularjs.org/1.6.0/angular-route.min.js"></script>
<script src="app.js"></script>
</head>
<body>
<a href="#/add-quote">Add Quote</a>
<div ng-view ></div>
</body>
</html>
这是我的 app.js
:
var app = angular.module('myApp', ['ngRoute']);
app.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/add-quote', {
templateUrl: 'views/add_quote.html',
controller: 'QuoteCtrl'
})
.otherwise({ redirectTo: '/' });
}]);
现在,当我访问该页面时,这是我在 url 中得到的内容:
当我点击 Add quote
按钮时,我得到了这个:
这里可能是什么问题? 感谢帮助
只需在 href:
中使用 hashbang#!
<a href="#!/add-quote">Add Quote</a>
由于 aa077e8,用于 $location hash-bang URL 的默认哈希前缀已从空字符串 (''
) 更改为 bang ('!'
)。
如果您真的想要没有哈希前缀,那么您可以通过向您的应用程序添加一个配置块来恢复以前的行为:
appModule.config(['$locationProvider', function($locationProvider) {
$locationProvider.hashPrefix('');
}]);
有关详细信息,请参阅
- AngularJS GitHub Pull #14202 Changed default hashPrefix to '!'
- AngularJS Guide - Migration - aa0077e8
抱歉太过自大但是...这是怎么发布的?这是一个巨大的破坏性错误。 — @MiloTheGreat
The breaking change as by #14202 should be reverted as the reference specification was already officially deprecated #15715
I'm going to close this issue because we haven't got any feedback. Feel free to reopen this issue if you can provide new feedback.
— https://github.com/angular/angular.js/issues/15715#issuecomment-281785369
我无法在 1.6.4 中使用路由,所以我决定使用 angular 1.5.11 并且路由工作正常,尽管我需要在 when(..) 函数中定义所有路由尾随“/”
如果坚持使用旧版本的 angular 是您的选择,那么请考虑它,因为它可以让您省心...
var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {
$routeProvider
.when("/layoutandviewbox", {
templateUrl : "views/layout-and-viewbox.html"
})
.when("/basicshapes", {
templateUrl : "views/basic-shapes.html"
})
.when("/advancedshapes", {
templateUrl : "views/advanced-shapes.html"
})
.when("/groups", {
templateUrl : "views/groups.html"
})
.when("/transformations", {
templateUrl : "views/transformations.html"
})
.when("/effects", {
templateUrl : "views/effects.html"
})
.when("/", {
templateUrl : "views/basic-shapes.html"
});
});
只需将 !
包含到 href
中:
<body>
<a href="#!/add-quote">Add Quote</a>
<div ng-view ></div>
</body>
app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
$locationProvider.hashPrefix('');
$routeProvider
.when('/add-quote', {
templateUrl: 'views/add_quote.html',
controller: 'QuoteCtrl'
})
.otherwise({ redirectTo: '/' });
}]);
试试这个可能会有帮助...
在html或查看页面
<body>
<a href="#/Home.html">Home</a>
<div ng-view></div>
</body>
在脚本页面中
var app=angular
.module('myModule',['ngRoute'])
.config(function($routeProvider, $locationProvider) {
$routeProvider
.when('/Home', {
templateUrl: 'FolderName/Home.html',
controller: 'homeCtr'
})
$locationProvider.hashPrefix('');
});