С помощью функции 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.
Вы можете использовать функцию для возврата 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'
});
}