Как предотвратить анимацию строки состояния и панели навигации при переходе анимации сцены активности?

Хотя это очень старый вопрос, я бы хотел опубликовать решение, которое я сейчас использую. Надеюсь, это поможет кому-то в будущем. После использования некоторых разных подходов я придумал красивую диаграмму , написанную Джоном Папой

. Он предлагает использовать специальную службу routerHelperProvider и настраивать состояния как обычный объект JS. Я не собираюсь копировать весь провайдер здесь. Подробнее см. Ссылку выше. Но я покажу, как я решил свою проблему с помощью этой службы.

Вот часть кода этого провайдера, который берет объект JS и преобразует его в конфигурацию состояний:

function configureStates(states, otherwisePath) {
    states.forEach(function(state) {
        $stateProvider.state(state.state, state.config);
});

Я преобразовал его следующим образом:

function configureStates(states, otherwisePath) {

    states.forEach(function(state) {

        var resolveAlways = {

            translations: ['Translations', function(Translations) {

                if (state.translationCategory) {

                    return Translations.get(state.translationCategory);

                } else {

                    return {};

                }

            }],

        };  



        state.config.resolve =

            angular.extend(state.config.resolve || {}, resolveAlways || {});



        $stateProvider.state(state.state, state.config);

    }); 

}); 

И мой объект настройки маршрута теперь выглядит следующим образом:

        {
            state: ‘users’,
            translationsCategory: ‘users’,
            config: {
                controller: ‘usersController’
                controllerAs: ‘vm’,
                url: ‘/users’.
                templateUrl: ‘users.html'
            }

Итак, что я сделал:

Я реализовал объект resolveAlways, который принимает пользовательское свойство translationsCategory, внедряет службу Translations и разрешает необходимые данные. Теперь не нужно делать это каждый раз.

123
задан rlay3 29 January 2017 в 22:41
поделиться