angularjs – angular ui-route state parent和resolve(嵌套解析
发布时间:2020-12-17 07:50:33 所属栏目:安全 来源:网络整理
导读:我有以下情况: index.html页面加载角度并包含:ui-view layout.html页面包含解析服务器数据的左侧菜单 homepage.html使用layout.html作为其父级,但需要从服务器解析自己的数据. 问题是:当我解决孩子没有解决的父母时, 当我删除父决心时,孩子解析. 你能帮帮
我有以下情况:
> index.html页面加载角度并包含:ui-view 问题是:当我解决孩子没有解决的父母时, 你能帮帮我吗,让我知道我做错了什么? 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.
两个解析都将被触发,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; }) 概要.我们可以看到here,解析功能对两者都有效.在允许此状态之前,导航到子节点时,必须同时解析(父节点和子节点). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |