$ location.path( “/”);不正常

时间:2015-12-01 03:27:39

标签: javascript angularjs

当我尝试使用$ location.path()时,url会发生变化,但无论我传入什么.path都会附加到我当前的url。我希望当我执行我的addShow()时,我想去index.html这是我的主页。能否请你帮忙。 网址改变如下: http://localhost:8080/add 当我执行我的addShow函数时,它改为: http://localhost:8080/add#/ 我希望它改为转到我的主页。

angular.module('app').controller("MainController",['$location', function($location) {
      var vm = this;
      vm.title = 'TV Show';
      vm.searchInput = '';
      vm.shows = [{
        title: 'Game of Thrones',
        year: 2011,
        favorite: true
      }, {
        title: 'Walking Dead',
        year: 2010,
        favorite: false
      }, {
        title: 'Firefly',
        year: 2002,
        favorite: true
      }, {
        title: 'Banshee',
        year: 2013,
        favorite: true
      }, {
        title: 'Greys Anatomy',
        year: 2005,
        favorite: false
      }];
      vm.orders = [{
        id: 1,
        title: 'Year Ascending',
        key: 'year',
        reverse: false
      }, {
        id: 2,
        title: 'Year Descending',
        key: 'year',
        reverse: true
      }, {
        id: 3,
        title: 'Title Ascending',
        key: 'title',
        reverse: false
      }, {
        id: 4,
        title: 'Title Descending',
        key: 'title',
        reverse: true
      }];
      vm.order = vm.orders[0];
      vm.new = {};
      vm.addShow = function() {
        vm.shows.push(vm.new);
        console.log(vm.shows);
        vm.new = {};
        $location.path("/");
      };

    }]);

我的配置功能如下:

    (function() {

  "use strict";

  angular
    .module("app")
    .config(function($routeProvider, $locationProvider) {


      //$locationProvider.html5Mode(true);

      $routeProvider
        .when('/', {
          templateUrl: 'list.html',
          controller: 'MainController',
          controllerAs: 'main',
        })
        .when('/add', {
          templateUrl: 'add.html',
          controller: 'MainController',
          controllerAs: 'main',
        })
        ;

    });
})();

4 个答案:

答案 0 :(得分:2)

尝试用{替换$location.path("/");         $window.location.href = "/";

答案 1 :(得分:1)

你需要为你的应用提供一个base url,因为当你调用路径方法时,角度将'http://localhost:8080/add'视为应用基础网址,因此工作不正确。

在主html文件的头部指定url base。

<base href="/">

如果你想使用html5模式:

$locationProvider.html5Mode(true);

document guide

示例:http://plnkr.co/edit/2EXVYKCjdKWPBd7LDEQB?p=preview

答案 2 :(得分:1)

我浏览了您的Plunkr(plnkr.co/edit/0z6ng0?p=preview),问题在于您导航到“添加”页面的方式。这一行 - a href =“./ add.html”将页面直接重定向到add.html。而是使用控制器中的功能将位置更改为“/ add”

main.ctrl.js(Controller): (添加此功能)

vm.newShow = function() {
   $location.path('/add');
};

List.html:

<a href="">
      <button class="btn-primary pull-right" ng-click="main.newShow()">New Show</button>
</a>

答案 3 :(得分:0)

只需使用控制器:&#39; vm&#39;,我认为它会起作用。只是回复我