我正在使用angular-ui-router,我决心通过服务从数据库中获取一些数据。
现在我想把它注入我的控制器。
但是,我的控制器没有在状态中定义,而只是在我的应用程序中定义。
这看起来像这样:
.state('myState', {
url: "/create",
templateUrl: "views/create.html",
resolve: {
templates : function(templateService){
return templateService.allMetadata.query({}, function(data){
}, function(err){
console.log(err);
});
}
},
controller: 'createCtrl'
所以如何将我的模板注入我在其他地方定义的createCtrl
。
试图在createCtrl
中放入依赖注入不起作用。似乎我唯一的选择是在state
decleration内部对我的控制器进行decalre。这显然非常糟糕。
任何解决方案?
答案 0 :(得分:1)
您需要以某种方式返回异步操作的承诺。假设templateService.allMetadata.query()没有返回promise,请尝试这样的事情。然后将“模板”注入控制器。
如果您可以修改它以返回承诺,请执行此操作。
.state('myState', {
url: "/create",
templateUrl: "views/create.html",
resolve: {
templates : function(templateService, $q){
var deferred = $q.defer();
templateService.allMetadata.query({}, function(data){
deferred.resolve(data);
}, function(err){
console.log(err);
deferred.reject();
});
return deferred.promise;
}
},
controller: 'createCtrl'