Угловая маршрутизация с помощью ngRoute не работает

#angularjs #angularjs-routing

#angularjs #angularjs-маршрутизация

Вопрос:

Я новичок в Angular и пытаюсь создать одностраничное приложение с 2 представлениями.

Когда я загружаю приложение, оно всегда показывает мне первое из 2 представлений, независимо от того, какой маршрут я ввожу в браузере. Это код javascript:

   var appControllers = angular.module('appControllers', []);
  appControllers.controller('HomeController', function($scope, $http) {
    var promise = $http({
      method: 'GET',
      url: 'restaurant.json'
    });
    promise.then(function(obj) {

      $scope.data = obj.data;
    });
  });
  appControllers.controller('InformationController', function($scope, $http) {
    var promise = $http({
      method: 'GET',
      url: 'restaurant.json'
    });
    promise.then(function(obj) {

      $scope.data = obj.data;
    });
  });

  var app = angular.module('myApp', ['ngRoute', 'appControllers']);
  app.config(['$routeProvider',
    function($routeProvider) {
      $routeProvider.
        when('/', {
          templateUrl: 'partials/productlist.html',
          controller: 'HomeController'
        }).
        when('/info', {
          templateUrl: 'partials/information.html',
          controller: 'InformationController'  
        })
    }]);
  app.controller('HomeController', function($scope, $http) {
    var promise = $http({
      method: 'GET',
      url: 'restaurant.json'
    });
    promise.then(function(obj) {

      $scope.data = obj.data;
    });
  });
  app.controller('InformationController', function($scope, $http) {
    var promise = $http({
      method: 'GET',
      url: 'restaurant.json'
    });
    promise.then(function(obj) {

      $scope.data = obj.data;
    });
  });
  

Я попытался изменить порядок, в котором я определяю 2 маршрута для 2 шаблонов просмотра.
Если я сначала определю информационный шаблон, этот шаблон будет отображаться всегда, а другой не будет отображаться.
Может кто-нибудь помочь мне решить эту проблему?

Комментарии:

1. Кажется, шаблоны загружаются просто отлично: plnkr.co/edit/uhl19fAbiHQbRp09hjzj?p=preview

Ответ №1:

Вот полностью функционирующий ngRoute:

 sampleApp.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/a', {
        templateUrl: 'templates/a.html',
        controller: 'a'
    }).
    when('/av2', {
        templateUrl: 'templates/av2.html',
        controller: 'av2',
    }).
      when('/a3', {
        templateUrl: 'templates/a3.html',
        controller: 'a3'
      }).

      otherwise({
        redirectTo: '/a'
      });
}]);
  

Попробуйте перекрестное сравнение этого с вашим кодом и посмотрите, найдете ли вы какие-либо различия. Я думаю, это может быть связано с тем, как вы очень поздно запускаете свое приложение в сценарий:

 var app = angular.module('myApp', ['ngRoute', 'appControllers']);
  

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

Комментарии:

1. Это не относится к AngularJS, блоки конфигурации будут выполняться до запуска приложения, независимо от того, где они определены.