AngularJS Route показывает следующий вид, а затем отправляет обратно в предыдущий вид
Использование того, что я думал, было основным маршрутом, но я ему не нравлюсь.
.config([
'$routeProvider',
function($routerProvider){
$routerProvider
.when('/view',{
templateUrl: 'view-profile.html',
controller: 'UserProfileController'
})
.when('/edit',{
templateUrl: 'edit-profile.html',
controller: 'UserProfileController'
})
.otherwise({
redirectTo: '/view'
});
}
]);
Выше работает, я могу вручную ввести / просмотреть или / отредактировать в браузере, и он загрузится, и работать.
У меня есть кнопки на моей странице для переключения пользовательского интерфейса, и когда я это делаю, я вижу новый вид, а затем он сразу переключается обратно. Я в / просмотра, я нажимаю, чтобы изменить путь для редактирования, и он переходит к редактированию, а затем обратно для просмотра. Однако, когда я начинаю редактировать и нажимаю, чтобы перейти к просмотру, он залипает. Затем я могу вернуться, чтобы редактировать нормально. Похоже, когда страница загружается при просмотре.
Вот как я меняю взгляды
this.viewProfile = function () {
$location.path('/view');
};
this.editProfile = function () {
$location.path('/edit');
};
и кнопки выглядят как
Вкл / просмотр
<button ng-click="user.editProfile()">Edit My Profile</button>
Вкл / редактировать
<button ng-click="user.viewProfile()">Save</button>
Спасибо!
2 ответа
Вы пробовали с "window.location.href"?
window.location.href = "#/view";
или что-то с Применить?
$scope.$apply(function() {
$location.path('/view');
});
или что-то с таймаутом
$timeout(function () {
$location.path('/bar');
});
Я думаю, что у вас есть 2 варианта здесь. Вместо кнопок вы можете использовать тег href, чтобы указать, куда вы хотите перейти
<a href="/edit">Edit My Profile</a>
Другой вариант - использовать $scope.$ Apply() после $location.path(). Я думаю, что это работает нормально, но я думаю, что первый вариант лучше.