Не удается получить доступ к элементу в том же представлении с помощью AngularJS

поэтому в целом я хочу создать одностраничное приложение с AngularJS, и я хочу, чтобы на моей странице был разный контент для общедоступных и зарегистрированных пользователей, поэтому я помещаю свою панель навигации, контент и нижний колонтитул в разные представления. Структура выглядит следующим образом:

  • index.html
  • script.js
  • navbar.html
  • содержание.html
  • нижний колонтитул.html
  • uirouter.html

Вот код для uirouter.html

<div ng-include="home.navbar"></div>
<div ng-include="home.content"></div>
<div ng-include="home.footer"></div>

А вот код для script.js

var myApp = angular.module('myApp', ['ngRoute']);
myApp.config(function($routeProvider, $locationProvider) {
  $routeProvider
  .when('/', {
    controller: 'RouteCtrl',
    templateUrl: 'uirouter.html'
  });
});

myApp.controller('RouteCtrl', function($scope) {
  $scope.home = {
    "navbar": "navbar.html"
    "content": "content.html",
    "footer": "footer.html"
  } 
});

И поместите ng-app, ng-controller и ng-view здесь, в index.html.

...
<body ng-app="myApp" ng-controller="RouteCtrl" id="home" data-spy="scroll" data-target=".navbar-collapse" data-offset="100">
  <div ng-view=""></div>
...

Все представления загружаются хорошо, но проблема в том, что когда я нажимаю ссылки на панели навигации, такие как «Функции» и «Цены», которые должны относиться к каждому элементу в представлении, это не работает. Вот как выглядит navbar.html

<nav class="navbar navbar-default navbar-fixed-top" role="navigation"> 
  <div class="container">
    <div class="navbar-header">
      <a class="navbar-brand" href="#"> <img src="images/logo.png" alt="logo"></a> </div>
    <div class="collapse navbar-collapse navbar-ex1-collapse">
      <ul class="nav navbar-nav navbar-right">
        <li class="active"><a href="#home">Home</a></li>
        <li><a href="#features">Features</a></li>
        <li><a href="#pricing">Pricing</a></li>
      </ul>
      </li>
      </ul>
    </div>
  </div>
</nav>

Таким образом, «Функции» и «Цены» должны относиться к этим элементам в content.html.

...
<div id="containerfeatures" class="container"> 
  <div class="row mainFeatures" id="features">
...
<div class="row PageHead" id="pricing">
...

Страница перенаправляется вместо ссылки на элементы, вот URL

http://localhost/app/#/pricing

которые думают, что это должно быть упомянуто об этом ..

http://localhost/app/#pricing

Я все еще новичок в AngularJS, поэтому я все еще блуждаю по пути туда и сюда. Это руководство, которому я следую при этом: Использовать несколько ng-просмотр одной страницы

Кто-нибудь, пожалуйста, помогите указать на мои ошибки или что я должен сделать, чтобы заставить их работать? Любая помощь будет очень признательна, большое спасибо.


person prameshvari    schedule 26.04.2015    source источник
comment
Или, может быть, есть другие способы показать несколько просмотров? Благодарю вас!   -  person prameshvari    schedule 26.04.2015


Ответы (2)


Вы не добавили маршруты /home и /features и т. д. в поставщика маршрутов в config. Также href должен быть таким, как показано @charlietfl

person manasi sakhare    schedule 26.04.2015
comment
Спасибо за твой ответ! наконец-то он работает, добавляя маршрут и hashPrefix :) - person prameshvari; 28.04.2015

Вам просто нужно добавить / к href.

<a href="#/home">Home</a>

Или, если вы установите hashPrefix (используя $locationProvider) на ! для SEO, это будет

<a href="#!/home">Home</a>

Angular рассматривает путь $location как похожий на '/pathpart1/pathpart2'

person charlietfl    schedule 26.04.2015
comment
Спасибо, но добавление / и ! к href по-прежнему не работает. Он продолжает перенаправлять на один и тот же URL-адрес ... поэтому, поскольку первый показанный путь является hashPrefix, означает ли это, что корень /# или как? - person prameshvari; 26.04.2015
comment
вы должны объявить hashPrefix в $locationProvider (см. документы), прежде чем вы сможете использовать его в html или URL. Вот почему я дал вам оба сценария. Для root будет использоваться #/ - person charlietfl; 26.04.2015
comment
спасибо! наконец-то удалось заставить его работать, добавив # и установив его в скрипте! - person prameshvari; 28.04.2015