我有以下情况:
> index.html页面加载角度并包含:ui-view
> layout.html页面包含解析服务器数据的左侧菜单
> homepage.html使用layout.html作为其父级,但需要从服务器解析自己的数据.
问题是:当我解决孩子没有解决的父母时,
当我删除父决心时,孩子解析.
你能帮帮我吗,让我知道我做错了什么?
app.js
$stateProvider .state('layout',{ url: "",templateUrl: 'partials/layout.html',controller:'LayoutController',abstract:true,resolve : { result_data: function ($q,CommonService) { return resolve_layout($q,CommonService) } } }) .state('homepage',{ url: "/homepage",templateUrl: 'partials/homepage.html',parent: 'layout',controller:'HomepageController',CommonService) { return resolve_homepage($q,CommonService) } } })
解析功能应该适用于父级和子级.有链接到
working plunker.
原文链接:https://www.f2er.com/angularjs/143292.html两个解析都将被触发,ui-router将一直等到它们都被执行.在孩子中,我们可以为父母解决这些问题,也可以自己解决.所以我建议更改名称(但不需要)并按照以下方式执行:
.state('layout',{ url: "",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",resolve : { result_data_child: function ($q,CommonService) var deferred = $q.defer(); $timeout(function(){ deferred.resolve("from a child"); },500); return deferred.promise; } }
现在,我们有两个可用的参数:result_data和result_data_child.所以这些可能是我们的控制器:
.controller('LayoutController',function ($scope,$state,result_data) { $scope.state = $state.current; $scope.result_data = result_data; }) .controller('HomepageController',result_data,result_data_child) { $scope.state = $state.current; $scope.result_data_parent = result_data; $scope.result_data_child = result_data_child; })