Aizlee
@Aizlee
Веб разработчик

Почему Angularjs ui-sref не работает пока не перезагружу страницу или не нажму на другую ссылку?

Есть ссылки, по клику на них открывается модальное окно. Первое нажатие отрабатывает нормально, но после закрытия окна, ссылка не кликабельна до перезагрузки страницы или пока не нажму на соседнею ссылку.
Сама ссылка:
<a ui-sref="userState({userId: data.id })" data-ui-sref-opts="{reload:false}" data-toggle="modal">View</a>

Роут:
.state("userState", {
                parent: "app.new",
                params: {
                    usertId: 0
                },
                onEnter: [
                    "$modal",
                    function($modal) {
                        $modal.open({
                            controller: "UserModalController",
                            templateUrl: 'users/modals/user-modal.html',
                        }).result.finally(function() {
                            $stateProvider.go('^');
                        });
                    }
                ]
            });

Не использовал ng-click по причине того, что этот блок добавляется динамически(директива TagInput).
  • Вопрос задан
  • 732 просмотра
Решения вопроса 2
AMar4enko
@AMar4enko
Потому что ui-router оперирует состояниями. Когда вы щелкаете по ссылке, вы переходите в состояние app.new.userState, переход в которое у вас сопровождается открытием модального окна. Но после того, как вы закрыли модальное окно, вы остаетесь в этом же состоянии, и повторный клик перехода на уже активное состояние не вызывает.
Посмотрите в сторону ui-router-extras, если вам нужно модальные окна к состояниям привязывать.

P.S. либо активируйте предыдущий/родительский стейт по закрытию модалки
Ответ написан
Комментировать
Aizlee
@Aizlee Автор вопроса
Веб разработчик
Решил проблему, изменил роут(забыл добавить $state)
.state("userState", {
                parent: "app.new",
                params: {
                    userId: 0
                },
                onEnter: [
                    "$modal", "$state"
                    function($modal,$state) {
                        $modal.open({
                            controller: "UserModalController",
                            templateUrl: 'users/modals/user-modal.html',
                        }).result.finally(function() {
                            $state.go('^');
                        });
                    }
                ]
            });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы