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(). Я думаю, что это работает нормально, но я думаю, что первый вариант лучше.

Другие вопросы по тегам