2

如果您了解 Facelets,那么它就不像简单的 JSP 包含或 Angular ng-include,其中模板本身定义了模板中应包含的内容。

在 Facelets 中,模板只定义了它的哪些部分是动态的或可替换的,视图可以使用它并告诉模板的那些可替换部分中应该包含哪些内容。在 Facelets 中,一个页面可以在一个文件中提供模板的所有可替换部分

面片示例:

模板:template.xhtml:

    <h:body>
        <div>
            <ui:insert name="main_section">Main Section</ui:insert>
        </div>
        <div>
             <ui:insert name="section">Section</ui:insert>
        </div>
        <div>
             <ui:insert name="sub_section">Sub Section</ui:insert>
        </div>
    </h:body>

查看:somepage.xhtml

<ui:composition template="./template.xhtml">
    <ui:define name="main_section">
        Welcome to main section which is defined by this somepage.xhtml
    </ui:define>

    <ui:define name="section">
        .. section as defined by this somepage.xhtml
    </ui:define>

    <ui:define name="sub_section">
        .. subsection as defined by this somepage.xhtml
    </ui:define>
</ui:composition>

这与常规包含模板不同,其中模板不允许页面定义模板的内容,除非它在模板中的确切使用位置。

ngInclude 示例

查看:main.html

<div>
    <ng-include src="./somepage_main_section.html"></ng-include>
    <ng-include src="./somepage_section.html"></ng-include>
    <ng-include src="./somepage_sub_section.html"></ng-include>
<div>

问题

ng-include中,somepage.html无法定义或提供模板的其他可替换部分。它必须将模板的所有部分分成多个文件并对其进行硬编码。

我知道 Facelets 在服务器端工作,而 ng-include 在浏览器端工作,但重要的是概念。尽可能地,我们希望在 AngularJS 中应用同样的概念。顺便说一句,我们正在使用 Play Framework,这意味着我们不能使用 Facelets。

4

1 回答 1

0

通过 play,您可以使用非常灵活的模板 :)

<!--index.scala.html content-->
@()
<!--template.sacala.html  contains all css and js path (head)-->
@template(){
   @menu(somePamar)

   <!--Content-->


   @footer()
}
<!--/index.html.scala content-->

这个网站很好地介绍了游戏框架和 angularjs 的设计http://pauldijou.fr/blog/2013/02/17/angularjs-routing-playframework/

于 2014-08-18T09:35:48.117 回答