Angularjs 如何在Angular ui route和#x27;在不同视图上时的父/子状态?
这是我的。我需要Angularjs 如何在Angular ui route和#x27;在不同视图上时的父/子状态?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,这是我的。我需要categories在HomeController和NavbarController上提供 $stateProvider .state('master', { abstract: true, views: { 'navbar@': { templateUrl: 'views/partials/navbar.default.html',
categories
在HomeController
和NavbarController
上提供
$stateProvider
.state('master', {
abstract: true,
views: {
'navbar@': {
templateUrl: 'views/partials/navbar.default.html',
controller: 'NavbarController as nb',
}
},
resolve: {
categories: function(Category) {
return Category.getList({ depth: 0 });
},
}
})
.state('home', {
parent: 'master',
url: '/',
views: {
'main@': {
templateUrl: 'views/home/home.html',
controller: 'HomeController as hc',
}
},
resolve: {
deals: function(Deal) {
return Deal.getList();
},
}
});
根据
子状态将从父状态继承已解析的依赖项,它们可以覆盖这些依赖项。然后,您可以将解析的依赖项注入控制器并解析子状态的函数
它还指出:
resolve关键字必须是相对于状态而不是视图的(如果使用多个视图)。
如果要在实例化子级之前等待承诺被解析,则必须将解析键注入子级状态
那么您没有从HomeController访问NavbarController的权限?将其传递给服务,然后将该服务注入两个控制器是否有效?如果我需要在多个控制器上访问某些内容,我通常会这样做,虽然我没有像您这样在$stateprovider中使用解析的经验have@LukeSchunk如果您希望承诺得到解决,并且仅在此之后才调用控件,那么您将如何实现这一点?问题似乎与我使用两种不同视图(
navbar
和main
)有关。从文档中可以看出:“完全有可能存在嵌套状态,其模板填充站点中各种非嵌套位置的ui视图。在这种情况下,您不能期望在子状态视图中访问父状态视图的范围变量。”正确。也许你可以共享自定义数据点,而不是自定义数据(从服务中获取)可以作为一种尝试。我可以。那怎么办?我基本上需要在两个控制器执行之前加载解析。你能举个例子吗?
$stateProvider.state('parent', {
resolve:{
resA: function(){
return {'value': 'A'};
}
},
controller: function($scope, resA){
$scope.resA = resA.value;
}})
.state('parent.child', {
resolve:{
resB: function(resA){
return {'value': resA.value + 'B'};
}
},
controller: function($scope, resA, resB){
$scope.resA2 = resA.value;
$scope.resB = resB.value;
}