html子元素中的grails/sitemesh布局设置属性(ng-app)
Posted
技术标签:
【中文标题】html子元素中的grails/sitemesh布局设置属性(ng-app)【英文标题】:grails/sitemesh layout set attribute (ng-app) in html child element 【发布时间】:2013-06-13 14:55:49 【问题描述】:我有几个页面共享一个布局。我正在添加一些将使用 Angular 的新页面。我正在尝试找出如何设置模板,以便在子页面中添加html
元素属性ng-app='xyz'
。
例如
_layout.gsp
<html lang="en" >
很想只做 child.gsp -
<html ng-app='angularApp'>
<meta name="layout" content="layout">
但是,这行不通。有什么简单的方法可以实现这一目标吗?
有没有办法使用内容模式?我试过了……
//child.gsp
<meta name="angularApp" content="angularApp"/>
//layout.gsp
<html lang="en" <% meta(name: 'angularApp')? "ng-app='$meta(name: 'angularApp')'":"" %> >
但它只是没有结果......
【问题讨论】:
如果您在_layout
模板上添加ng-app='angularApp'
,那不应该提供给儿童吗?
不同的子gsps需要不同的ng-app
s吗?
我没有,但我想要灵活性...
按照@ivar 的回答,您最终会为所有子页面复制相同的ng-app
,尽管它会运行良好。一般来说,如果您只有一个ng-app
,那么您可以按照我在回答中提到的方式进行操作。
【参考方案1】:
在您的视图正在使用的 _layout.gsp 中:
<html lang="en" $pageProperty(name:'page.ngapp') > ...... </html>
然后您将能够更改使用先前布局的后续 gsp 视图中的值:
<content tag="ngapp">ng-app='angularApp'</content>
编辑: 在我使用的较新版本的 grails (2.4.4) 中,我必须指定不带引号的属性 - 值组合:
<content tag="ngapp">ng-app=angularApp</content>
最终呈现的视图将具有您想要的任何内容:
<html lang="en" ng-app="angularApp" > ..... </html>
【讨论】:
像魅力一样工作......如此简单。谢谢。【参考方案2】://layout.gsp
<html lang="en" ng-app="angularApp">
//child.gsp
<meta name="layout" content="layout"/>
Angular 应用程序将被注入主(父)布局,并在需要时可用于所有子视图。如果您对单页应用程序感兴趣,也可以使用ng-view
。
【讨论】:
我不关注这个?这不是“总是”在 child.gsp 页面中吗? @Nix 是的,您可以在子 gsp 页面中访问 Angular 应用程序,但如果您已经在主布局中注入了应用程序,则不必在每个子页面上注入 Angular 应用程序。如果子页面使用layout.gsp
的内容,$scope
将在子页面中可用。
我在您的代码中没有看到任何注入。我读了这篇文章,因为所有布局都将具有 ng-app='angularApp'
属性。
@Nix 对不起,我的意思是“引导”而不是“注入”。是的,这正是目标。如果我们只有一个 Angular 应用程序供 gsps 使用,则在布局中引导应用程序并在子 gsps 中访问应用程序,而不是在每个子页面上使用 ng-app
。
这不是我需要的。我有条件地想在子页面中设置它。以上是关于html子元素中的grails/sitemesh布局设置属性(ng-app)的主要内容,如果未能解决你的问题,请参考以下文章