Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
html子元素中的grails/sitemesh布局集属性(ng app)_Grails_Angularjs_Sitemesh - Fatal编程技术网

html子元素中的grails/sitemesh布局集属性(ng app)

html子元素中的grails/sitemesh布局集属性(ng app),grails,angularjs,sitemesh,Grails,Angularjs,Sitemesh,我有两个页面共享一个布局。我正在添加一些将要使用angular的新页面。我试图找出如何设置模板,以便在子页面中添加到htmlelements属性ang app='xyz' e、 g _普惠制 <html lang="en" > 我很想做child.gsp- <html ng-app='angularApp'> <meta name="layout" content="layout"> 但是obv,这不起作用。有什么简单的方法可以做到这一点吗 有没

我有两个页面共享一个布局。我正在添加一些将要使用angular的新页面。我试图找出如何设置模板,以便在子页面中添加到
html
elements属性a
ng app='xyz'

e、 g

_普惠制

<html lang="en"  >

我很想做child.gsp-

<html ng-app='angularApp'>
<meta name="layout" content="layout">

但是obv,这不起作用。有什么简单的方法可以做到这一点吗

有没有一种方法可以使用内容模式?我试过

//child.gsp
<meta name="angularApp" content="angularApp"/>

//layout.gsp
<html lang="en" <%  meta(name: 'angularApp')? "ng-app='${meta(name: 'angularApp')}'":"" %> >
//child.gsp
//普惠制

但它只会在视图正在使用的_layout.gsp中产生任何结果…

<html lang="en" ${pageProperty(name:'page.ngapp')} > ...... </html>
。。。。。。
然后,您将能够更改使用先前布局的后续gsp视图中的值:

<content tag="ngapp">ng-app='angularApp'</content>
ng app='angularApp'
编辑: 在我使用的较新版本grails(2.4.4)中,我必须指定不带引号的属性-值组合:

<content tag="ngapp">ng-app=angularApp</content>
ng app=angularApp
最后,渲染视图将具有您想要的内容:

<html lang="en" ng-app="angularApp" > ..... </html>
。。。。。
//layout.gsp
//child.gsp

angular应用程序将注入主(父)布局,并在需要时可用于所有子视图。如果您对单页应用程序感兴趣,您也可以使用
ng view

如果您在
\u布局
模板上添加
ng-app='angularApp'
,这不应该对儿童可用吗?您是否需要为不同的儿童GSP提供不同的
ng-app
,但是我想要灵活性…按照@ivar的答案,你最终会为所有儿童页面复制相同的
ng应用程序
,尽管它会很好地工作。一般来说,如果你只有一个
ng应用程序
,那么你可以按照我在回答中提到的方法进行操作。它就像一个魔咒。。。这么简单。谢谢。我不懂这个?这不是“总是”在child.gsp页面中吗?@Nix是的,您可以在child.gsp页面中访问angular应用程序,但如果您已经在主布局中注入了angular应用程序,则不必在每个子页面上注入angular应用程序<如果子页面使用
layout.gsp
的内容,则代码>$scope将在子页面中可用。我看不到您的代码中有任何注入。我读到这篇文章是因为所有版面都将具有
ng app='angularApp'
属性。@Nix对不起,我的意思是“bootstraped”而不是“injected”。是的,这就是目标。如果GSP只使用一个angular应用程序,则在布局中引导该应用程序,并在子GSP中访问该应用程序,而不是在每个子页面上使用
ng app
。这不是我需要的。我有条件地想在子页面中设置它。
//layout.gsp
<html lang="en" ng-app="angularApp">

//child.gsp
<meta name="layout" content="layout"/>