$location.путь в Angular JS не работает

#angularjs

#angularjs

Вопрос:

Я знаю, что этот вопрос задавался много раз, и после просмотра ответов и внесения изменений в свой код я все еще не могу открыть другую страницу нажатием кнопки. Я только начал с Angular JS, так что может кто-нибудь, пожалуйста, помочь мне с тем же? (Адрес в URL меняется, но страница не отображается)

код:


Index.html


 <!doctype html>
<html  ng-app="testAngularApp" class="no-js">
  <head>
    <meta charset="utf-8">
    <title></title>

  </head>
  <body>

    <!-- Add your site or application content here -->
      <div ng-controller="MainCtrl">
            <button ng-click="testButton()"> Page Change</button>
      </div>

    <script src="bower_components/angular/angular.js"></script>
    <!-- endbower -->
    <!-- endbuild -->

        <script src="scripts/app.js"></script>
        <script src="scripts/controllers/main.js"></script>
</body>
</html>
  

app.js


 'use strict';

/**
 *
 * Main module of the application.
 */
angular
  .module('testAngularApp', [])
  .config(function($locationProvider){
        $locationProvider.html5Mode(true);
    });
  

main.js


 'use strict';

/**
 * @ngdoc function
 * @name testAngularApp.controller:MainCtrl
 * @description
 * # MainCtrl
 * Controller of the testAngularApp
 */
angular.module('testAngularApp')
  .controller('MainCtrl', function ($timeout, $log, $location, $scope) {
    $scope.testButton = function(){

        // Testing the opening of different page.
        $log.info($location.path());
        $timeout(function () {
            $location.path('/views/Dummy.html');
        });

    };
  });
  

Спасибо и с уважением,

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

1. docs.angularjs.org/guide /$location Использовать окно. Расположение. href (смотрите «Чего он не делает»).

Ответ №1:

(Адрес в URL меняется, но страница не отображается)

$location не вызывает полной перезагрузки страницы при изменении URL браузера. Чтобы перезагрузить страницу после изменения URL, используйте API более низкого уровня, $window.location.href.

 $window.location.href = '/views/Dummy.html';
  

Ответ №2:

Ваш $ timeout не имеет значения, как долго он должен задерживаться. Вам нужно указать это после функции.

     $timeout(function () {
        $location.path('/views/Dummy.html');
    }, 1);
  

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

1. Пробовал, как упоминалось выше, но результат тот же

2. У вас также нет ng-view на вашей базовой странице, поэтому загружать это представление некуда. Без маршрута и ng-view вы не увидите изменения, которые ищете.

3. Я хочу открыть новую страницу, а не показывать изменения на той же странице. Не могу ли я открыть новую страницу, используя $location. путь?

4. Открытие новой страницы приведет к завершению работы вашего приложения. Angular создан для создания и запуска одностраничного приложения (SPA). Вы делаете это, изменяя представления.

Ответ №3:

Пожалуйста, введите ngRoute в свое приложение и не добавляйте поддельные add и ссылки на scriptangular-route.js

 angular
      .module('testAngularApp', ['ngRoute'])
      .config(function($locationProvider){
            $locationProvider.html5Mode(true);
        });
  

и в вашем контроллере

  $location.path('/path'); <- path has to be defined in your app.config ...(ie .when(/path..)not just path to html file
  

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

1. Я попытался добавить ngRoute в качестве зависимости, а также в скрипт, но не могу перейти на следующую страницу..