我正在使用Angular-UI-router,我有一个解决方案,通过服务从DB中给我带来一些数据。
现在我想将其注入我的控制器。
但是,我的控制器不是在状态中定义的,而只是在我的应用程序中定义的。
这看起来像这样:
.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
的克莱里贴花我的控制器。这显然是非常糟糕的。
有什么解决办法吗?
无论如何,您需要返回异步操作的承诺。 假设 templateService.allMetadata.query() 没有返回承诺,请尝试这样的事情。 然后将"模板"注入控制器。
如果可以修改它以返回承诺,请执行此操作。
.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'