单击锚标记按钮时AngularJs路由不起作用

时间:2017-01-22 11:11:01

标签: javascript angularjs

我创建了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>

1 个答案:

答案 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';