使用AngularJS路由加载页面时出现问题

时间:2017-05-09 11:11:59

标签: javascript html angular routing

难住了。我的代码没有问题(据我所见),并且在未选择任何内容时加载list-patents.htm模板,但在单击相应的锚标记时无法加载add-patents模板。 URL显示如下:

http://localhost/#!/#list-patents

内容没有加载的任何原因?它可能是URL中的#!吗?

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular-route.min.js"></script>
</head>

<main ng-app="myApp" ng-controller="appCtrl">
    <div class="container">
        <nav>
            <ul>
                <li><a href="#list-patents">List patents</li>
                <li><a href="#add-patent">Add patent</li>
            </ul>
        </nav>
        <section class="ng-view">

        </section>
    </div>
</main>
var app = angular.module('myApp', ['ngRoute']);

app.controller('appCtrl', function($scope, $http, $rootScope) {
    $scope.stages = [
        {'stage': 'green', 'cost': '$1, 500'},
        {'stage': 'yellow', 'cost': '$1, 800'},
        {'stage': 'red', 'cost': '$2, 100'},
        {'stage': 'blue', 'cost': '$2, 500'},
        {'stage': 'brown', 'cost': '$2, 900'}
    ];
    $http.get('../scripts/patent-renewal.json').then(function(response) {
        $scope.application = response.data.patents;
    });

});

app.config(function($routeProvider){
    $routeProvider
    .when('/', {
        templateUrl: '../templates/list-patents.htm',
        controller: 'appCtrl'
    })
    .when('/add-patent', {
        templateUrl:'../templates/add-patent.htm',
        controller: 'appCtrl'
    })
});

1 个答案:

答案 0 :(得分:2)

!#可能确实是问题,为什么不加注意。

您可以尝试切换到html5模式

  $locationProvider.html5Mode(true);

然后你的href可以是直接的,没有#

<li><a href="list-patents">List patents</li>
<li><a href="add-patent">Add patent</li>