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

Angular UI-Router:使用父级视图的子级

侯向文
2023-03-14
问题内容

以故事形式:

我在这里寻找的是主从设置。母版是列表形式的,当我单击一个链接(相对于特定的行/记录(在这种情况下为Account))时,我想在主视图(直译为“主”视图:)中查看详细信息<div class="container" ui-view="main"></div>

我想这样做并维护我的URL结构(/accounts用于帐户列表;/accounts/:id用于详细版本),
但是我希望详细视图使用列表正在使用的视图

我目前有什么

index.html

...
<div class="container" ui-view="main"></div>
...

account.js

$stateProvider
    .state ('accounts', {
        url: '/accounts',
        views: {
            'main': {
                controller: 'AccountsCtrl',
                templateUrl: 'accounts/accounts.tpl.html'
            }
        },
        data: { pageTitle: 'Account' }
    })
    .state ('accounts.detail', {
        url: '/:id',
        views: {
            'main': {
                controller: 'AccountDetailCtrl',
                templateUrl: 'accounts/detail.tpl.html'
            }
        },
        data: { pageTitle: 'Account Detail' }
    });

此时,该/accounts路线将按预期工作。它accounts/accounts.tpl.htmlmain视图中正确显示。因为html转发器中的每一行都将其链接到其相应的/accounts/:idURL,我正在使用nested
state处理该URL accounts.detail

对于大多数比我了解更多的人来说,显而易见的是, 如果模板中存在该命名视图
,我accounts.detail将呈现给该视图。确实是这样。main accounts/accounts.tpl.html

但这不是我想要的。我希望这些accounts.detail东西在父main视图中呈现;我想的HTML
accounts/detail.tpl.html替换 的HTML
accounts/accounts.tpl.html发现index.html: <div class="container" ui- view="main"></div>

那我该怎么做呢?

我在上下文中解决方案
答案是,诀窍是设置URL方案以标识哪个子状态为“默认”。我用普通英语解释此代码的方式是,父类是带有正确URL的抽象类,而“默认”子类具有“相同”
URL(用表示'')。

如果您需要进一步的说明,请发表评论,我们将分享更多指导。

.config(function config( $stateProvider ) { $stateProvider
    .state ('accounts', {
        abstract: true,
        url: '/accounts',
        views: {
            'main': {
                templateUrl: 'accounts/accounts.tpl.html',
                controller: 'AccountsCtrl'
            }
        },
        data: { pageTitle: 'Accounts' }
    })
    .state ('accounts.list', {
        url: '',
        views: {
            'main': {
                templateUrl: 'accounts/list.tpl.html',
                controller: 'AccountsListCtrl'
            }
        },
        data: { pageTitle: 'Accounts List' }
    })
    .state ('accounts.detail', {
        url: '/:id',
        views: {
            'main': {
                templateUrl: 'accounts/detail.tpl.html',
                controller: 'AccountDetailCtrl'
            }
        },
        data: { pageTitle: 'Account Detail' }
    });

问题答案:

听起来您只是不想让视图分层。为此,只需将第二个状态的名称更改为detail

但是请注意,这样做会丢失状态树的任何分层属性(例如,帐户的控制器代码状态)。

如果您想保持控制器的层次结构,但是执行html的替换,我将在其他两个之上创建另一个父级,以处理控制器逻辑,但是只有一个非常简单的view <div ui- view=""></div>

例如:

$stateProvider
    .state('app', { url: '', abstract: true, template: 'parent.html', controller: 'ParentCtrl' })
    .state('app.accounts', { url: '/accounts', templateUrl: 'accounts.tpl.html', controller: 'AccountsCtrl' })
    .state('app.detail', { url: '/accounts/:id', templateUrl: 'detail.tpl.html', controller: 'AccountDetailCtrl' });


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

  • 有人能帮我吗?我不知道为什么我会犯这个错误。

  • 问题内容: 假设我们有3个Entities对象类: 如何使用JPA2.x(或hibernate)批注来: 父级删除时(一对多)自动删除所有子级 删除后自动从子级列表中删除子级(多对一) 儿童删除时(一对一)自动删除玩具 我正在使用Hibernate 4.3.5和mysql 5.1.30。 谢谢 问题答案: 如本文所述, 实体状态转换应从父级到子级联,而不是相反。 您需要这样的东西:

  • 问题内容: 假设我有以下3个Angular UI Router状态: 如果直接转换为,我该如何告诉Angular UI Router进入状态? 理想情况下,我想要的是这样的: 然后,在我的代码中,我希望$ state.go(’adminCompanies’)等同于$ state.go(’adminCompanies.list’) 问题答案: 由于您的应用程序当前已设置,因此您不需要任何明确的逻辑。

  • 问题是要确定子数据的总和是否等于父数据。如果是,返回真,否则返回假。 下面是我的代码,在提交时出现错误。我知道这是一个简单的问题,但在编写了条件之后,我很难通过遍历所有左右节点来递归检查二叉树中每个节点的和条件。 请指导我,因为我哪里做错了。

  • 问题内容: 在我的应用中,我必须经常在两种布局之间切换。错误在下面发布的布局中发生。 第一次调用布局时,没有发生任何错误,一切都很好。然后,当我调用不同的布局(空白),然后再次调用我的布局时,出现以下错误: 我的布局代码如下所示: 我知道之前曾有人问过这个问题,但对我来说没有帮助。 问题答案: 错误消息说明你应该做什么。