#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 в качестве зависимости, а также в скрипт, но не могу перейти на следующую страницу..