Angularjs 是否存在角度';s ngRoute';s";“解决”;用户界面内路由器
在Angularjs 是否存在角度';s ngRoute';s";“解决”;用户界面内路由器,angularjs,angular-ui-router,ngroute,Angularjs,Angular Ui Router,Ngroute,在ngRoute中,将解析值传递给特定状态的控制器 代码是: .config(['$routeProvider', 'securityAuthorizationProvider', function ($routeProvider, securityAuthorizationProvider) { $routeProvider.when('/projects', { templateUrl:'projects/projects-list.tpl.html', controll
ngRoute
中,将解析值传递给特定状态的控制器
代码是:
.config(['$routeProvider', 'securityAuthorizationProvider', function ($routeProvider, securityAuthorizationProvider) {
$routeProvider.when('/projects', {
templateUrl:'projects/projects-list.tpl.html',
controller:'ProjectsViewCtrl',
resolve:{
projects:['Projects', function (Projects) {
//TODO: fetch only for the current user
return Projects.all();
}],
authenticatedUser: securityAuthorizationProvider.requireAuthenticatedUser
}
});
}])
我想在ui路由器中做一些非常类似的事情,有点像这样:
...
$stateProvider.
$state('home', {
url: '/home',
templateUrl: 'myhome.html',
controller: 'HomeCtrl'
})
...
但是我想传递HomeCtrl
一些从API获取数据以显示在myhome.html
中的服务
如何使用ui路由器
?这里也有:
您可以使用“解析”为控制器提供状态自定义的内容或数据。resolve是一个可选的依赖关系映射,应该将其注入控制器
如果这些依赖项中有任何一个是承诺,那么在实例化控制器并触发$stateChangeSuccess事件之前,它们将被解析并转换为一个值
resolve属性是一个映射对象。映射对象包含以下项的键/值对:
- key–{string}:要注入控制器的依赖项的名称
- 工厂-{string | function}:
- 如果为字符串,则它是服务的别名
- 否则,如果为函数,则注入该函数,并将返回值视为依赖项。如果结果是一个承诺,则在实例化控制器并将其值注入控制器之前对其进行解析
- (包括普朗克)
.state('layout', {
url: "",
templateUrl: 'partials/layout.html',
controller:'LayoutController',
abstract:true,
resolve : {
result_data: function ($q, $timeout)//,CommonService)
{
//return resolve_homepage($q,CommonService)
var deferred = $q.defer();
$timeout(function(){
deferred.resolve("from a parent");
}, 500);
return deferred.promise;
}
}
})
.state('homepage', {
url: "/homepage",
templateUrl: 'partials/homepage.html',
parent: 'layout',
controller:'HomepageController',
resolve : {
result_data_child: function ($q, $timeout)//,CommonService)
{
//return resolve_homepage($q,CommonService)
var deferred = $q.defer();
$timeout(function(){
deferred.resolve("from a child");
}, 500);
return deferred.promise;
}
}
链接是与ui路由器相同
$stateProvider.
$state('home', {
url: '/home',
templateUrl: 'myhome.html',
controller: 'HomeCtrl',
resolve:{
projects:['Projects', function (Projects) {
//TODO: fetch only for the current user
return Projects.all();
}],
authenticatedUser: securityAuthorizationProvider.requireAuthenticatedUser
}
})
...
我在这里看到了一个很好的演示: