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

时间:2015-02-28 23:59:02

标签: 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: '/'
        });
}]);

我的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">

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

我正在使用Wordpress。

我期待着你的帮助!

1 个答案:

答案 0 :(得分:5)

工作示例


  

plnkr


建议


1。您的href不应该有#/

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

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);
});

3。最后。逗号()

后的额外逗号

你有:

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

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

4。您可能需要配置html5

(参见plnkr中的script.js)

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

5。你可以像这样添加基础href

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


相关资源


我建议检查一下:



让我知道这是否有效!