链接无法使用angular ui路由器

Links not working with angular ui-router

本文关键字:angular ui 路由器 链接      更新时间:2023-09-26

所以我已经设置了ui路由器,几分钟前它就可以工作了,它会显示带有从另一个html文件加载的内容的模板,但没有一个链接可以工作。现在什么都不起作用:模板出现了,但内容没有被拉入,并且没有任何链接起作用。

Ctrl.js

var site = angular.module('site', ['ui.router']);
site.config(function($stateProvider, $urlRouterProvider) {
    $stateProvider
    .state('page', {
      url: '/page',
      templateUrl: 'page.html',
    })
    .state('about', {
      url: '/about',
      templateUrl: 'about.html',
    });
    $urlRouterProvider.otherwise('/page');
  })

Index.html

<!DOCTYPE html>
  <html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
    <script src="https://angular-ui.github.io/ui-router/release/angular-ui-router.js"></script>
    <script src="scripts/ctrl.js"></script>
    <link rel="stylesheet" href="style/main.css">
  </head>
  <body ng-app="site">
    <nav class="navbar  navbar-default navbar-fixed-top" id="navigate">
      <div class="container">
      <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navSmall">
          <span class="icon-bar"></span>
          <span class="icon-bar"></span>
        </button>
            </div>
            <div class="collapse navbar-collapse" id="navSmall">
              <ul class="nav navbar-nav navbar-right">
                <li><a href="#/about.html">about</a></li>
              </ul>
            </div>

     </div>
    </nav>
  <div class="jumbotron text-center container-fluid">
    <div ui-view></div>

  </div>

<footer class="footer">
<div id="note" class="container">
  <div class="row">
    <div class="col-sm-8">
     -----Footer Content-----
    </div>
    <div class="col-sm-4">
    </div>
  </div>
</div>
</footer>
  </body>
  </html>

About.html(应加载但未加载(

  <div ui-view="about">
    <div class="container-fluid bg-about">
      <div class="container-content">
      <div class="row">
      </div>
    </div>
    </div>
    </div>

哇,你们都快!谢谢你的建议。所以更新:将其更改为ahref="#/about"有助于我现在可以转到链接,但仍然没有内容显示。控制台错误:

    Error: Access to restricted URI denied
fg/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:103:167
n@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:98:460
m/g<@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:95:489
e/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:130:409
uf/this.$get</m.prototype.$eval@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:145:103
uf/this.$get</m.prototype.$digest@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:142:165
uf/this.$get</m.prototype.$apply@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:145:399
Ac/c/<@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:21:115
h/<.invoke@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:41:374
Ac/c@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:21:36
Ac@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:21:332
fe@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:20:156
@https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:315:135
g/</j@https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js:2:29566
g/</k<@https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js:2:29882
 angular.min.js:117:399

您的状态URL是/about,而不是/about.html

在任何情况下,使用ui-sref指令,这就是的作用

<a ui-sref="about">about</a>

您只需传入状态名称(以及任何参数,请参阅文档(,它就会为您创建正确的URL,同时考虑任何$locationProvider.html5mode配置。


如果您通过file:///some/path/to/index.html加载应用程序,则对模板(即about.html(的AJAX请求可能不起作用。您应该使用HTTP服务器进行本地开发。

看看(甚至只是克隆作为基础(棱角分明的种子项目。它为首次进行Angular开发提供了一个极好的起点。

您的状态URL 错误

您的代码<li><a href="#/about.html">about</a></li>

您可以通过浏览器中的URL访问状态,但引用应用程序的其他部分是一种糟糕的做法,尽管它仍然适用于

<li><a href="#/about">about</a></li>

执行此操作

<li><a ui-sref="about">about</a></li>

您的状态URL是错误的,是/about not/about.html

试试这个

<li><a ui-sref="about">about</a></li>

要使链接工作,您需要使用

    <a href="#/about">about</a> 

而不是

    <a href="#/about.html">about</a>. 

同样,对于要拉入的内容(如数据绑定(,您需要使用控制器。

试试这个,只需确保test.html在那里。

<!DOCTYPE html>
    <html lang="en">
        <head>
            <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
            <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.js"></script>
            <script>
                var module = angular.module("sampleApp", ['ngRoute']);
                module.config(['$routeProvider',
                function($routeProvider) {
                    $routeProvider.
                        when('/route1', {
                            controller: 'myCtrl',
                            templateUrl: 'test.html'
                        }).
                        otherwise({
                            redirectTo: '/'
                        });
                }]);
              module.controller("MainController", function($scope) {
        });
        module.controller("myCtrl", function($scope) {
            $scope.my = 10;
            ab = function() {
                alert($scope.my);
            }
        });
            </script>
        </head>
        <body ng-app="sampleApp">
          <div ng-controller="MainController"> 
               <a href="#/route1" role="button">Route</a> 
                <ng-view>
                </ng-view> 
            </div> 
        </body>
    </html>