使用routeProvider的href加载新页面而不是绑定视图

use*_*506 1 angularjs angularjs-routing

我遇到了routeProvider.我的链接不断打开新页面,而不是在视图中加载模板.

我的代码如下

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: '/'
        });
}]);
Run Code Online (Sandbox Code Playgroud)

我的HTML看起来像

<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">
Run Code Online (Sandbox Code Playgroud)

当页面加载时,加载初始模板,但是当我点击其中一个链接时,加载一个新页面而不是在视图中加载模板(该页面看起来像http://test.com:8888/runkinlocal/wp-content/themes/wordpress-bootstrap-master /#/ createChallenge)

我正在使用Wordpress.

我期待着你的帮助!

Sin*_*lel 6

工作实例


plnkr


建议


你的hrefs不应该#/

<a href="createChallenge">Create</a> |
<a href="findChallenge">Find</a>
Run Code Online (Sandbox Code Playgroud)

2.否则不需要 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);
});
Run Code Online (Sandbox Code Playgroud)

3.最后一个逗号后面的额外逗号.when()

你有:

    .when('/findchallenge', {
        templateUrl: 'raceApp/findChallenge_view.php',
        //controller: 'findChallenge'
    })
Run Code Online (Sandbox Code Playgroud)

控制器已注释掉,但仍有逗号.

4.您可能需要配置html5

(参见plnkr中的 script.js )

// configure html5 to get links working on jsfiddle
$locationProvider.html5Mode(true);
Run Code Online (Sandbox Code Playgroud)

你可以像这样添加基础href

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


相关资源


我建议检查一下:



如果有效,请告诉我!