angularjs route正在改变我的网址

时间:2017-02-16 17:01:08

标签: angularjs

我似乎无法让我的路线运行......

如果我转到:http://localhost:8000/#/notes,则会将我的网址更改为:http://localhost:8000/#!#%2Fnotes。这也不起作用:http://localhost:8000/#!#notes

运行angularjs 1.6和路线1.6。我也在使用gulp webserver。

routes.js:

angular.module('NoteWrangler').config(function($routeProvider){

  $routeProvider.when('/notes', {
    templateUrl: '/templates/pages/notes/index.html'
  })

});

的index.html:

<div class="wrapper">
   <div ng-view>
   </div>
</div>
<script src="/node_modules/jquery/dist/jquery.js" charset="utf-8"></script>
<script src="/node_modules/angular/angular.js" charset="utf-8"></script>
<script src="/node_modules/angular-route/angular-route.js" charset="utf-8"></script>
<script src="app.js"></script>
<script src="routes.js"></script>   

gulpFile.js

var gulp = require('gulp');
var webserver = require('gulp-webserver');

gulp.task('webserver', function() {
  gulp.src('./')
    .pipe(webserver({
      livereload: true,
      open: true
    }));
});

1 个答案:

答案 0 :(得分:1)

您做得对,但angular 1.6.x $locationProvider引入了更改。在此版本之前,hashprefix的默认值为空'',但现在是'!'。

检查https://docs.angularjs.org/api/ng/provider/$locationProvider

https://code.angularjs.org/1.5.11/docs/api/ng/provider/$locationProvider

因此请修改route.js,如下所示

angular.module('NoteWrangler').config(function($routeProvider, $locationProvider) {
  $locationProvider.hashPrefix('');
  //$locationProvider.html5Mode(false); 
  //false is default therefore it is not required to set
  $routeProvider.when('/notes', {
    templateUrl: '/templates/pages/notes/index.html'
  })

});