当前位置: 首页 > 面试题库 >

角度ui路由状态的父级和resolve(嵌套的resolves)

卫弘图
2023-03-14
问题内容

我有以下情况:

  1. index.html页面加载有角并包含:ui-view
  2. layout.html页面包含左侧菜单,该菜单可解析来自服务器的数据
  3. 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',
        resolve : {
            result_data: function ($q,CommonService)
            {
                return resolve_homepage($q,CommonService)
            }
        }
    })

问题答案:

一项resolve功能应同时适用于父级和子级。有一个与正在工作的矮人有关的链接。

两个解析都将被触发,并且ui- router将等待直到两个解析都被执行。在孩子中,我们可以为父母解决问题,也可以自己解决。因此,我建议更改名称(但不是必需的),并像这样进行操作:

.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;
        }
    }

现在,我们有两个可用参数:result_dataresult_data_child。因此,这些可能是我们的控制器:

.controller('LayoutController', function ($scope, $state, result_data) {
    $scope.state = $state.current;
    $scope.result_data = result_data;
})
.controller('HomepageController', function ($scope, $state, result_data, result_data_child) {
    $scope.state = $state.current;
    $scope.result_data_parent = result_data;
    $scope.result_data_child  = result_data_child;
})

摘要。正如我们在这里看到的那样,解决功能同时适用于两者。另外
两个 (父母和子女) 必须 导航到孩子时,被允许这种状态之前得到解决。



 类似资料:
  • 问题内容: 我想用以下结构构建一个站点header-view,main-view,footer- view。因此,我定义了一个包含页眉和页脚的根路由。root的子代将是我的全部站点。在这些站点中,我将拥有更多的嵌套视图。 在下面的代码中,它确实显示了页眉,但未显示页脚和主视图。一旦删除父级继承,它将显示主视图,但不显示页眉和页脚。 的HTML JS 问题答案: 有一个与正在工作的矮人有关的链接。

  • 本文向大家介绍angularjs ui-router中路由的二级嵌套,包括了angularjs ui-router中路由的二级嵌套的使用技巧和注意事项,需要的朋友参考一下 关于ui-router中嵌套路由中的问题 1.首先我们的页面层次为   其中Main.html是我们的主页,我们要在main.html中对路由进行统一的管理。 main.html页面中有一个ui-view在这里将填充PageTa

  • 问题内容: 角度ui路由器的示例演示在起始页面具有以下链接: “ ui-router”的完整网址为或 “关于”的完整网址为或 当我使用durandalJS时,存在一个限制,即默认URL只是“ /”,不能有“ / ui-router”。 Angular ui路由器插件有相同的限制吗? 问题答案: 请参阅此处,默认路由有一个“其他”选项。

  • 问题内容: 使用ui- router并将父状态URL设置为导致我的URL看起来像在查看子页面时一样。我只想在散列和子项之间添加一个。 我尝试将父状态网址保留为空白,但是使用锚链接时,ui-sref不会链接回父状态。有人知道使用根级别未命名的父URL的解决方案吗? app.config child.config 问题答案: 将有解决方案 _(几乎)_任何东西。有一个工作的plnkr。我们将要使用的功

  • 问题内容: 我有一个 父母 州和许多孩子州。如果我希望在与孩子中的一个孩子在一起时在父母上工作,则需要执行此“ hack”操作: 这是非常丑陋的方式,我有很多孩子,所以这似乎不是很好的解决方案。有人对此问题有其他解决方案吗? 问题答案: 您只能检查而不是检查状态

  • 问题内容: 我在应用程序中使用和嵌套状态,并且我还有一个导航栏。导航栏是手写的,用于突出显示当前状态。它是一个两级导航栏。 现在,当我进入时,说我希望同时突出显示(在1级)和(在2级)。但是,使用时,如果我处于状态,则仅突出显示该状态,而不突出显示。 有什么办法可以使该状态突出显示? 问题答案: 代替这个- 你可以这样做- 目前不起作用。这里正在进行讨论(https://github.com/an