Angularjs 我可以在body标签上放置ui视图吗?

Angularjs 我可以在body标签上放置ui视图吗?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我正在开发一个应用程序,其标题的样式和UI选项将根据用户当前所处的状态而变化。例如,如果用户单击主菜单中的上载、编辑配置文件、创建播放列表或创建库按钮,则会对标题进行以下更改: 标题的背景以更改颜色 网站徽标将应用CSS3动画,使其滑入新位置 文字气泡中的特定消息(取决于用户所处的状态)将出现在徽标旁边 取消按钮将显示在标题的右边缘 这意味着我的站点上不会有静态元素,因此逻辑告诉我应该将ui视图放在我的body标签中,从而使其看起来像这样: <body ng-app="app" ui-vi

我正在开发一个应用程序,其标题的样式和UI选项将根据用户当前所处的状态而变化。例如,如果用户单击主菜单中的上载编辑配置文件创建播放列表创建库按钮,则会对标题进行以下更改:

  • 标题的背景以更改颜色
  • 网站徽标将应用CSS3动画,使其滑入新位置
  • 文字气泡中的特定消息(取决于用户所处的状态)将出现在徽标旁边
  • 取消按钮将显示在标题的右边缘
  • 这意味着我的站点上不会有静态元素,因此逻辑告诉我应该将
    ui视图
    放在我的body标签中,从而使其看起来像这样:

    <body ng-app="app" ui-view>
    
    
    

    我以前从未见过在任何地方使用过它,所以我对此表示怀疑。有什么想法吗?

    我不确定这在技术上是否有效,但我相信你应该避免,因为:

    • 这将要求所有模板都包含一个最外层的
      标记,这会降低它们的可重用性
    • 这通常是一件不寻常的事情,而且会带来成本,我看不出这有什么特别的好处,所以成本/收益分析说,坚持传统做法:使用
      s
    • 我怀疑这实际上可能会起作用,但通常带有
      ng app
      的标签会在应用程序的整个生命周期中保持不变。如果您调出包含
      ng app
      的标记,可能会遇到一些奇怪的错误。因此,许多人将
      ngapp
      放在第一个
      标签上,称之为done

    但这是你的应用程序,尝试这两种方法的努力都很低,所以只需尝试一下,看看(并让我们知道你学到了什么)。我认为你不需要等待权威机构的stackoverflow回答,就可以用你的应用程序测试2个稍微不同的HTML结构。

    不,请不要这样做

    body
    标记中包含
    ui视图
    ,可能会导致许多JS插件/库无法使用,尤其是当它们向
    document.body
    动态添加一些HTML标记时。在这种情况下,导航到另一个视图将重新初始化
    document.body
    ,从而忽略以前添加的HTML标记

    例如,Firebase和Angular.js(AngularFire)就是这种情况。我希望每个遇到错误的人

    Uncaught NotFoundError: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.
    

    我会看到这个帖子的。只需确保您没有将
    ui视图
    属性添加到
    body
    标记中。

    唯一的缺点是您必须在每个模板中包含标题。如果不在ng view中,可以在标头中使用指令来侦听更改。为什么您的逻辑告诉您将ui视图放在body标记中?有什么特别的吗?我想我在这里寻找的是ui路由器的嵌套状态/视图和多个命名视图。