Manuel Bernhardt
Manuel Bernhardt

Reputation: 3124

AngularJS view doesn't change when navigating to link

I'm baffled by the following: I have a simple link like this:

    <li><a href="#/foo">Foos</a></li>

but when clicking on it, the view is not updated. The URL in the browser changes, but nothing happens, and nothing gets displayed in the console. If I load the URL directly in the browser, then the correct page is loaded.

The routes look like this:

app.config(function($routeProvider, RestangularProvider) {
    $routeProvider
        .when('/index', {templateUrl: 'assets/views/index.html'})
        .when('/foos', {templateUrl: 'assets/views/list.html', controller: controllers.FooListCtrl})
        .when('/foos/create', {templateUrl: 'assets/views/update.html', controller: controllers.FooUpdateCtrl})
        .when('/foos/:id/update', {templateUrl: 'assets/views/update.html', controller: controllers.FooUpdateCtrl})
        .otherwise({redirectTo: '/index'});

    RestangularProvider.setBaseUrl("/admin");
});

Upvotes: 6

Views: 3208

Answers (2)

snumpy
snumpy

Reputation: 2878

I have been able to resolve this issue by adding target="_self" to the link.

<li><a href="#/foo" target="_self">Foos</a></li>

I found this resolution here.

Upvotes: 3

Manuel Bernhardt
Manuel Bernhardt

Reputation: 3124

Ok, so apparently, this is a known issue of sorts: when the locationProvider (i.e. $location) is injected to one controller, links cease to work globally. One workaround seems to be to rewrite the links via jQuery, and that works:

app.run(function($rootScope) {
    $('[ng-app]').on('click', 'a', function() {
        window.location.href = $(this).attr('href');
    });
});

Upvotes: 4

Related Questions