就像在此问答中所讨论的:Angular UIRouter:基于父解析对象决定子状态模板,我们可以像这样
.factory('GetName', ['$http', '$timeout',
function($http, $timeout) {
return {
get : function(id) {
// let's pretend server async delay
return $timeout(function(){
// super simplified switch... but ...
var name = id == 1
? "views.view2.html"
: "views.view2.second.html"
;
return {templateName : name};
}, 500);
},
};
}
]);
然后,templateProvider
定义将如下所示:
views: {
"page": {
templateProvider: function($http, $stateParams, GetName) {
// async service to get template name from DB
return GetName
.get($stateParams.someSwitch)
// Now we have a name
.then(function(obj){
return $http
// let's ask for a template
.get(obj.templateName)
.then(function(tpl){
// haleluja... return template
return tpl.data;
});
})
},