href with routeProvider loads a new page instead of binding the view

安稳与你 提交于 2019-12-08 07:37:20

问题


I'm stuck with routeProvider. my links keep opening a new page instead of loading the template in the view.

My code is the following

raceApp.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
    $routeProvider
        .when('/', {
            templateUrl: 'raceApp/createChallenge_view.php',
            controller: 'createChallenge'
        })
        .when('/createchallenge', {
            templateUrl: 'raceApp/createChallenge_view.php',
            controller: 'createChallenge'
        })
        .when('/findchallenge', {
            templateUrl: 'raceApp/findChallenge_view.php',
            //controller: 'findChallenge'
        })
        .otherwise({
            redirectTo: '/'
        });
}]);

My HTML looks like

<base href="/runkinlocal/wp-content/themes/wordpress-bootstrap-master/" />

<a class="menu-item select-runner0" href="#/createChallenge">
<a class="menu-item select-runner0" href="#/findchallenge">

When the page loads, the initial template is loaded, but then when I click on one of the links, a new page loads instead of loading the template in the view ( the page looks like http://test.com:8888/runkinlocal/wp-content/themes/wordpress-bootstrap-master/#/createChallenge)

I am working with Wordpress.

I'm looking forward to your help!


回答1:


Working Example


plnkr


Suggestions


1. Your hrefs should not have #/

<a href="createChallenge">Create</a> |
<a href="findChallenge">Find</a>

2. Otherwise doesn't need redirectTo

.config(function($routeProvider, $locationProvider) {
  $routeProvider
    .when('/', {
      templateUrl: 'home.html'
    })
    .when('/createChallenge', {
      templateUrl: 'create.php',
      controller: 'CreateChallengeController'
    })
    .when('/findChallenge', {
      templateUrl: 'find.php',
      controller: 'FindChallengeController'
    })
    .otherwise("/");

  // configure html5 to get links working on jsfiddle
  $locationProvider.html5Mode(true);
});

3. Extra comma after last .when()

You have:

    .when('/findchallenge', {
        templateUrl: 'raceApp/findChallenge_view.php',
        //controller: 'findChallenge'
    })

The controller is commented out but there is still a comma.

4. You might need to configure html5

(see script.js in the plnkr)

// configure html5 to get links working on jsfiddle
$locationProvider.html5Mode(true);

5. You can add the base href like so

<script type="text/javascript">
  angular.element(document.getElementsByTagName('head')).append(angular.element('<base href="' + window.location.pathname + '" />'));
</script>


Relevant Resources


I suggest checking these out:

  • $routeProvider docs
  • $route example



Let me know if that works!



来源:https://stackoverflow.com/questions/28788443/href-with-routeprovider-loads-a-new-page-instead-of-binding-the-view

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!