Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Force refreshing on a route causes $location.path() to be wrong. #2762

Closed

Description

@Siyfion

When I navigate to a route such as http://www.test.com/products/management and force a refresh, the $routeProvider fails to match it against any routes and pushes me back to http://www.test.com/products (not even a valid route!). I think that this is because $location.path() incorrectly reports the current path as /management.

Here's my route configuration for reference:

  angular.module('labelLogicLiveApp')
    .config(function ($locationProvider, $routeProvider) {

      // Use HTML5 strategy if available.
      $locationProvider.html5Mode(true).hashPrefix('!');

      $routeProvider
        .when('/', {
          templateUrl: '/views/home.html'
        })
        .when('/user/login', {
          templateUrl: '/views/user_login.html'
        })
        .when('/product/management', {
          templateUrl: '/views/product_management.html',
          resolve: { isAuth: 'authService' }
        })
        .when('/product/:productId', {
          templateUrl: '/views/product_details.html',
          resolve: { isAuth: 'authService' }
        })
        .otherwise({
          redirectTo: '/'
        });
    });

image

Activity

  1. thatmarvin commented on May 23, 2013

    @thatmarvin

    I see this too. Looks like a regression introduced in 1.1.5, as it was working fine in 1.1.4. The only precondition to trigger this is to load the url without #/, no force refresh needed.

  2. kapusta commented on May 24, 2013

    @kapusta

    Seeing the same thing and can corroborate the part where it was working in 1.1.4

    I have a few routes in my app with varying lengths and the behavior I'm seeing is that the last slash and stuff behind it is gone. So a route like /display/foo/123 becomes /display/foo and something like /create/foo becomes /create

  3. Siyfion commented on May 24, 2013

    @Siyfion
    Author

    Ah, and there was me thinking it could just be me being silly! lol. I'm going to test in 1.1.4 to double check that this has been introduced in 1.1.5 and report back.

  4. Siyfion commented on May 24, 2013

    @Siyfion
    Author

    I can confirm that this bug was definitely introduced in v1.1.5; v1.1.4 works fine.

  5. geddski commented on May 24, 2013

    @geddski
    Contributor

    Duplicate of #2774
    I ran a git bisect and found it was commit 58ef323

  6. ilplotkin commented on May 24, 2013

    @ilplotkin

    $location.path() on http://server/path/file.html returns file.html in 1.1.5 (it returned empty string in 1.1.4).
    Looks like that it's related issue.

  7. petebacondarwin commented on May 24, 2013

    @petebacondarwin
    Contributor

    Actually #2774 is a duplicate of this one!

  8. Siyfion commented on May 24, 2013

    @Siyfion
    Author

    I was just about to say... You can't close them both! 😄

  9. petebacondarwin commented on May 24, 2013

    @petebacondarwin
    Contributor
  10. clkao commented on May 28, 2013

    @clkao
    Contributor

    You can workaround the issue in 1.1.5 by adding <base href="/">, as mentioned in #2799 (comment)

  11. geddski commented on Jun 11, 2013

    @geddski
    Contributor

    Adding a element is not a good solution. It changes the way the browser handles relative paths and breaks many third-party libraries/widgets, especially those that use urls in SVG like some color pickers.

  12. IgorMinar commented on Jun 11, 2013

    @IgorMinar
    Contributor

    Are you guys setting base[href] in your apps?

    What @clkao mentioned is not a workaround, but a requirement for the router to work properly. if you don't set base[href] then we have no way of telling what is the root path of your app and all of the links and static resources in your app will be loaded from the wrong location (unless you use absolute paths).

  13. Siyfion commented on Jun 12, 2013

    @Siyfion
    Author

    @IgorMinar I wasn't until @clkao pointed it out, but now I am. Perhaps this needs to be made a bit clearer somewhere in the documentation... Plus I'd put the tag into the Yeoman generator-angular project with a dummy value, as that'll force people to notice!

  14. added a commit that references this issue on Jun 14, 2013
    2bc62ce
  15. IgorMinar commented on Jun 14, 2013

    @IgorMinar
    Contributor

    so it turns out that base[href] approach has some issues. see the commit message of 2bc62ce for more info.

  16. geddski commented on Jun 14, 2013

    @geddski
    Contributor

    Here's an idea that would help: #2805

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions