我显然已经错过了UI-Router和/或angular的文档,所以,虽然我听起来很愚蠢,但这里是:
在http://angular-ui.github.io/ui-router/site/#/api/ui.router.state。$ stateProvider中我们有一个示例解析函数:
resolve: {
myResolve1:
function($http, $stateParams) {
return $http.get("/api/foos/"+$stateParams.fooID);
}
}
我知道它的返回值将以名称“myResolve1”注入控制器。
对我来说不太清楚的是功能参数“$ http”和“$ stateParams”的值来自哪里。那么,调用者在哪里找到赋予此函数的值?
答案 0 :(得分:1)
这是一个很好的观点,例如在这里讨论
我们应该使用面向IoC的表示法
resolve: {
dataParent: ['$stateParams', 'ProfileService', function ($stateParams, ProfileService) {
var username = $stateParams.username;
return ProfileService.getProfile(username);
}]
}
最大的好处是......即使应用了缩小,它也会起作用。但大多数情况下,现在已经明确说明:
有一个包含所有必需依赖项名称的数组 - 而resolve函数作为最后一个参数
答案 1 :(得分:0)
您可以将通常注入控制器的任何内容注入解析函数,包括其他解析。您需要小心这一点,因为如果您正在进行链接解析,则状态需要更长时间才能完全导航,因此渲染视图会变慢。链接解析的一个例子看起来像这样。
resolve: {
loggedIn: function(auth){ return auth.requireLoggedIn()},
user: function(loggedIn, auth){return auth.resolveUser()}
}
auth是一个服务,它是我的角度应用程序的一部分,你可以看到loggedIn是一个解决方案,需要先解决才能用于加载你的用户。然后,您可以将这两个注入控制器。
你可以把任何Angular服务,工厂,过滤器或解决方案放在那里。而且我确定我错过了一些你可以添加的其他核心内容,但这通常是我注入的决心。所以要回答你的问题,他们只是来自你的Angular应用程序。