使用函数ContentService.getQuestions(),我得到一个带有属性' Type'的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发生了变化,因为templateUrl:tempUrl获取的原始变量是谁,没有被更改。 所以我需要一个解决方案,我可以根据我的JSON属性加载不同的模板。
答案 0 :(得分: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'
});
}