编码正斜杠后,AngularJS附加链接 -

时间:2016-06-05 08:50:15

标签: javascript angularjs

http://localhost/templateStore/app/#!/templates - 工作正常。

点击当前页面上的链接后,链接将转换为:http://localhost/templateStore/app/#!/templates#%2Ftemplates%2F1

这应该是:http://localhost/templateStore/app/#!/templates/1

详细信息按钮的

链接定义

`<a class="btn btn-primary btn-block" ng-href="#/templates/1">Details</a>` 
  

问题

正斜杠被编码为“%2F”,您可以看到Angular创建的URL附加了一个“/templates”。

  

我使用的是UBUNTU 15.04

查看app.js和template.js的代码:

app.js

angular.module('templateStore', [
  'ngRoute',
  'templateStore.view1',
  'templateStore.view2',
  'templateStore.templates'
]).
config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) {
  $locationProvider.hashPrefix('!');

 $routeProvider.otherwise({redirectTo: '/templates'});
}]);

template.js

angular.module('templateStore.templates',['ngRoute'])

.config(['$routeProvider',function($routeProvider){
    $routeProvider.
        when('/templates',{
            templateUrl: 'templates/templates.html',
            controller: 'TemplateCtrl'
        }).
        when('/templates/:templateId',{
            templateUrl: 'templates/template-details.html',
            controller: 'TemplateDetailsCtrl',

        })

    }])

    .controller('TemplateCtrl',['$scope',function($scope){
        console.log('TemplateCtrl Init ');
        console.log($scope);
    }])
    .controller('TemplateDetailsCtrl',['$scope',function($scope){
        console.log('TemplateDetailsCtrl Init ');
        console.log($scope);
        alert('TemplateDetailsCtrl');
    }]);

请告诉我如何解决此问题。

请参阅下面的屏幕截图

目标网页

enter image description here

在鼠标悬停在详细信息按钮上时,请查看左下角的链接

enter image description here

点击详细信息按钮后查看发生了什么:

enter image description here

模板详细信息页面:当我们输入网址为http://localhost/templateStore/app/#!/templates/1

时,可以查看此页面

enter image description here

1 个答案:

答案 0 :(得分:0)

  

删除了$locationProvider.hashPrefix('!');,它正在运行。

config(['$locationProvider', '$routeProvider', function($locationProvider, $routeProvider) {
  $locationProvider.hashPrefix('!'); // deleted this line . 

 $routeProvider.otherwise({redirectTo: '/templates'});
}]);