为了账号安全,请及时绑定邮箱和手机立即绑定

角UI路由器-具有多个布局的嵌套状态

角UI路由器-具有多个布局的嵌套状态

ABOUTYOU 2019-07-17 18:10:37
角UI路由器-具有多个布局的嵌套状态我想有多个布局(1,2,3),我想切换到不同的路线,根据需要的布局。我目前有一个根状态,默认使用某个布局,然后在该布局中包含针对页眉、页脚、侧边栏等部分的命名UI视图指令。我只是想知道是否有可能更改嵌套状态的布局,因为它目前无法工作,控制台或Linter中也没有出现错误。我目前在浏览器中根本没有输出,这使我认为我实现了错误的方法,因为所有的路由都不是从路由状态继承的。下面是代码:my-module.js'use strict';angular.module('my-module', ['ngResource', 'ui.router'])   // Routing for the app.   .config(function ($stateProvider, $urlRouterProvider) {     $stateProvider      .state('root', {         url: '',         views: {           'layout': {             templateUrl: 'partials/layout/1-column.html'           },           'header': {             templateUrl: 'partials/layout/sections/header.html'           },           'footer': {             templateUrl: 'partials/layout/sections/footer.html'           }         }       })       .state('root.home', {         url: '/'       })       .state('root.signup', {         url: '/signup',         views: {           'step-breadcrumb': {             templateUrl: 'partials/signup/step-breadcrumb.html'           }         }       })       ;     $urlRouterProvider.otherwise('/');   })   ;index.html<!doctype html><html class="no-js" ng-app="my-module">   <head>     <meta charset="utf-8">     <title>My Test App</title>     <meta name="description" content="">     <meta name="viewport" content="width=device-width">     <!-- build:css({.tmp,app}) styles/main.css -->     <link rel="stylesheet" href="styles/main.css">     <!-- endbuild -->     <!-- build:js scripts/modernizr.js -->     <script src="bower_components/modernizr/modernizr.js"></script>     <!-- endbuild -->   </head>   <body>     <div ui-view="layout">     </div>     <!-- build:js({app,.tmp}) scripts/vendor.js -->     <script src="bower_components/angular/angular.js"></script>     <script src="bower_components/angular-resource/angular-resource.js"></script>     <script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script>     <!-- endbuild -->感谢你的帮助
查看完整描述

1 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

虽然没有柱塞显示你的例子,但我将与你分享一个:工作布局实例..请观察它,看看我在这里要解释的是什么。

如果我们root状态应该是唯一的根状态,注入到index.html,我们确实需要一些不同的定义:

所以对于index.html

// index.html<body>
    <div ui-view="layout">
    </div></body>

我们需要这样的语法:

$stateProvider  .state('root', {
    url: '',
    views: {
      'layout': {
        templateUrl: 'partials/layout/1-column.html'
      },
      'header@root': {
        templateUrl: 'partials/layout/sections/header.html'
      },
      'footer@root': {
        templateUrl: 'partials/layout/sections/footer.html'
      }
    }
  })

这是什么?'header@root'?这是绝对的命名。在这里检查一下:

在幕后,每个视图都分配了一个绝对名称,该名称遵循'viewname@statename',其中viewname是视图指令中使用的名称,状态名称是状态的绝对名称,例如contact.tem。您还可以选择用绝对语法编写视图名称。

其他州的定义也是如此。因为‘root.signup’有直接的父级‘root’,现有的语法将正常工作。

.state('root.signup', {
    url: '/signup',
    views: {
      'step-breadcrumb': { // working AS IS
      ...

但是我们可以使用绝对命名,而且它也能工作。

.state('root.signup', {
    url: '/signup',
    views: {
      'step-breadcrumb@root': { // absolute naming
      ...

因为这就是它背后的工作原理。

请注意布局有关更多细节的示例


查看完整回答
反对 回复 2019-07-17
  • 1 回答
  • 0 关注
  • 389 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信