在 Angular 中声明视图时添加额外的 'views:'foo':' 的目的是啥?

Posted

技术标签:

【中文标题】在 Angular 中声明视图时添加额外的 \'views:\'foo\':\' 的目的是啥?【英文标题】:What's the purpose of adding the extra 'views:'foo':' when declaring a view in angular?在 Angular 中声明视图时添加额外的 'views:'foo':' 的目的是什么? 【发布时间】:2015-11-20 00:57:52 【问题描述】:

views:例如声明a视图的目的是什么

.state('app.example', 
    url: "/example",
    views: 
      'my-example': 
        templateUrl: "views/example.html",
        controller: 'myCtrl'
      
    
  )

与此相反

 .state('app.example', 
        url: "/example"
        templateUrl: "views/example.html",
        controller: 'myCtrl'
        
      )

【问题讨论】:

【参考方案1】:

它用于为单个状态提供多个并行视图。示例:

.state('app.example', 
    url: "/example",
    views: 
        "example1": 
            template: 'app.example.view1'
        ,
        "example2": 
            template: 'app.example.view2'
        
    
)

index.html

<ui-view = "view1">
</ui-view>

<ui-view = "view2">
</ui-view>

如此有效,您的状态有两个平行的视图。你可以找到详细解释here。

【讨论】:

好吧,这就是为什么它们被用于选项卡和侧视图/侧边菜单的原因。在处理多个并行视图的子状态时,这将如何工作(什么是最佳实践)? 抱歉,从未将嵌套状态用于并行视图。也许将此作为​​一个单独的问题?【参考方案2】:

用于在单个页面(状态)上显示多个视图。当我们在单个页面上显示多个并行视图时,我们使用上述方法。假设您有一个页面,您必须在不同的位置显示不同的图表,我们创建了多个视图并在这些位置上附加了图表。希望这会有所帮助

【讨论】:

【参考方案3】:

好的,我想通了,为此我创建了一个codepen 以使其很好地适应其他离子应用程序。这会在按下按钮或侧边菜单项时更新子视图,并通过使 多个 子视图共享这样的名称

,在 codepen 内提供更多详细信息
     views: 
            'shared-child-view' :
              templateUrl: "[path to your children, in our case child1.html and child2.html]"
            
          `

看起来像这样的地方

 .state('sidemenu.parent.child1', 
      url: "/child1",
      views: 
        'shared-child-view' :
          templateUrl: "child1.html"
        
      
    )
       .state('sidemenu.parent.child2', 
      url: "/child2",
      views: 
   'shared-child-view': 
     templateUrl: "child2.html"
   
 
    )
`

它可以位于像这样处于抽象状态的父级中(但它不是必须的,但很可能这就是您的 ionic 应用程序的设置方式):

.state('sidemenu', 
  url: "/sidemenu",
  abstract: true,
  templateUrl: "sidemenu.html"
)
.state('sidemenu.parent', 
  url: "/parent",
  views: 
    'menuContent' :
      templateUrl: "parent.html"
    
  
)

您可以交替或更改视图中的每个子视图以使用相同名称的 evrey 视图,在本例中为“shared-child-state

  <div ui-view name="shared-child-view"></div>

并且可以通过

使其可点击
<a href="#/sidemenu/parent/child2" class="item">Child View 2
              </a>

如果您使用ui-serf,这将不起作用。

我希望这对某人有帮助!

【讨论】:

以上是关于在 Angular 中声明视图时添加额外的 'views:'foo':' 的目的是啥?的主要内容,如果未能解决你的问题,请参考以下文章

运行时滚动视图中的额外空间(插图)

在 Redmine 核心视图中添加额外的 SQL 查询(插件中的覆盖视图)

在类中声明第一个字段属性之前添加额外的行

表格视图上方的额外空白快速Xcode

KEYCLOAK - 扩展 OIDC 协议 |缺少凭据选项卡 |在 AccessTokenResponse 中添加额外的声明

iOS 7 addSubview 为我的 UIView 添加了额外的长度,这是为啥呢?