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