Задать вопрос
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).
  • Вопрос задан
  • 744 просмотра
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Учебный центр IBS
    WEB-022 Разработка на Angular. Продвинутый уровень
    1 неделя
    Далее
  • Академия Эдюсон
    Frontend-разработчик + ИИ
    9 месяцев
    Далее
  • МИПО
    Бакалавриат Веб-разработка
    54 месяца
    Далее
Решения вопроса 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('^');
                        });
                    }
                ]
            });
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы