我创建了this Plunker并添加了一个简单的路由。但由于某些原因,路由不起作用。我想在点击删除按钮时重定向到#/ delete,但没有任何事情发生。
的script.js:
var appRoot = angular.module('myNgApp', ['ngRoute', 'ui.bootstrap']);
appRoot.config([
'$routeProvider', function ($routeProvider) {
$routeProvider
.when('/', { templateUrl: 'ngIndex.html', controller: 'IndexCtrl' })
.when('/delete', { templateUrl: 'delete.html', controller: 'DeleteCtrl' })
.otherwise({ redirectTo: '/' });
}
]);
ngIndex.html:
<a class="btn btn-danger" href="#/delete">Delete</a>
答案 0 :(得分:0)
所以它是因为带有hash-prefix的angular 1.6路由的变化。所以相反og&#34;&#34; hashprefix现在是&#34;!&#34;
由于aa077e8,用于$ location hash-bang的默认哈希前缀 网址已从空字符串(&#39;&#39;)更改为bang(&#39;!&#39;)。如果你的 应用程序不使用HTML5模式或正在浏览器上运行 不支持HTML5模式,并且您尚未指定自己的模式 hash-prefix然后客户端URL现在包含一个!字首。对于 例如,URL将成为mydomain.com/#/a/b/c而不是 mydomain.com /#!/ A / B / C
如果你真的想要没有hash-prefix,那么你可以恢复 通过向您的应用程序添加配置块来执行以前的行为:
appModule.config([&#39; $ locationProvider&#39;,function($ locationProvider){
$ locationProvider.hashPrefix(&#39;&#39;); }]); Source
我做了类似的帖子,提供了可能的解决方案: Angular not routing properly. URL is localhost:8081/#!/#pageName
来自其他帖子:
怎么办?
的 1。设置HTML5mode为真
$locationProvider.html5Mode(true);
并在html set base in html header:
<base href="/">
最后将<a ng-href="#pagename">
更改为
<a ng-href="pagename">
<强> 2。从1.5 - 手动设置哈希前缀返回旧行为
这将使您的应用在您的问题中按预期工作。
app.config(['$locationProvider', function($locationProvider) {
$locationProvider.hashPrefix('');
}]);
在您的示例中
要查看这是您可以更改的问题
$window.location.href = '#/delete';
到
$window.location.href = '#!/delete';