#angularjs #angular_ui_router
Пункты меню выглядят как Label Меню формируется автоматически, состояния подставляются из массива. Как сделать так, чтобы для некоторых (не всех) пунктов меню состояние было фиктивным, т.е. при клике на ссылку переход не происходил бы. Например, просто открывалось бы подменю, а страница сайта не менялась. Варианты: void(0), не существующее состояние, состояние со свойством abstract:true, - вызывают ошибку. Сделать обратный переход в resolve не получается, т.к. исходное состояние уже потеряно. (или нет?) Уточнение к комментарию Grundy: Предложение сделать так: Label Label Приводит к удвоению кода. Label в моем случае содержит код, который придется повторить дважды. Не хотелось бы. Также не хотелось бы отказываться от ui-sref. Можно было бы сделать так: Label где path=[path1, path2, void(0)] Но хочется сделать на ui-sref. Видимо, надо еще пояснить.Вариант: Label можно, но не хочется. Хочется что-то типа: Label Но на это angular выдает ошибку, т.к. $staite не может быть void(0). Вот я и хотел бы создать фиктивное состояние, которое никуда бы не переводило, аналогично href="void(0)"
Ответы
Ответ 1
Ответ найден, благодаря @Grundy. Состояние с именем '.' и есть то самое искомое состояние. В итоге имеем: Label Плохо вчера посмотрел, данное решение является непригодным, т.к. angular все равно пытается перейти в данное состояние (с именем '.') и выдает ошибку, оставаясь, правда, в исходном состоянии. Но выход все же найден. Создаем рабочее состояние в минимальной комплектации. .state('layout.fix', { views: { }, resolve: { path: function(){console.log('Im chost'); return true; } } }) Такое состояние angular воспримет как корректное. По нему даже можно перейти. В блоке .run() вставить перехват смены состояния: $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams, options){ if(fromState.name != '' && toState.name == 'layout.fix'){ event.preventDefault(); } }); Таким образом, если это не изначальная загрузка fromState.name != '' и переход идет на фиктивное состояние, то отменяем переход.
Комментариев нет:
Отправить комментарий