Динамическая маршрутизация angularJS на основе ответа JSON

0

С помощью функции ContentService.getQuestions() я получаю JSON со свойством "Тип". Этот тип свойства может быть "DevOps" или что-то еще. Если свойство Type содержит строку DevOps, я хочу загрузить другой шаблон. И если это не "Devops", я хочу загрузить другой шаблон.

Код:

function configureRouting($routeProvider) {
    var tempUrl = '';

    $routeProvider
        .when('/form', {
            resolve: {
                dataService: function (ContentService) {
                    var questions = ContentService.getQuestions();
                    var resolved = Promise.resolve(questions);
                    resolved.then(function (q) {
                        console.log(q.Type);
                        if (q.Type === 'DevOps') {
                            tempUrl = 'components/devops/template.html';
                        } else {
                            tempUrl = 'components/hr/template.html';
                        }
                    });
                    return questions;
                }
            },
            controller: 'FormController',
            controllerAs: 'frmCtrl',
            templateUrl: tempUrl
        })
        .otherwise({
            redirectTo: '/form'
        });
}

В коде tempUrl doest change, потому что templateUrl: tempUrl принимает исходную переменную, кто не изменен. Поэтому мне нужно решение, в котором я могу загрузить другой шаблон на основе моего свойства JSON.

Теги:
routing
route-provider

1 ответ

0

Вы можете использовать функцию для возврата URL-адреса шаблона, подобного этому...

function configureRouting($routeProvider) {
        $routeProvider
            .when('/form', {                    
                controller: 'FormController',
                controllerAs: 'frmCtrl',
                templateUrl: function(ContentService){
                     var tempUrl = '';
                     var questions = ContentService.getQuestions();
                        var resolved = Promise.resolve(questions);
                        resolved.then(function (q) {
                            console.log(q.Type);
                            if (q.Type === 'DevOps') {
                                tempUrl = 'components/devops/template.html';
                            } else {
                                tempUrl = 'components/hr/template.html';
                            }
                        });
                        return tempUrl;
                }

            })
            .otherwise({
                redirectTo: '/form'
            });
    }
  • 0
    Тогда я получаю TypeError: ContentService.getQuestions не является функцией.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню