自动编译模板


如果你在 <script> 标签中编写模板,并且设置了特定的属性,那么 Framework7 会自动帮你编译所有的模板:

  1. <script type="text/template7" id="myTemplate">
  2. <p>Hello, my name is {{name}} and i am {{age}} years old</p>
  3. </script>

其中:

  • type="text/template7" 指定了这个script的内容会被 Framework7 当做一个 Template7 模板自动编译

  • id="myTemplate" 是模板的id,后面可以通过这个id来方法这个模板

你需要在 初始化应用 的时候传入一个参数来启用自动编译模板功能:

  1. var myApp = new Framework7({
  2. //Tell Framework7 to compile templates on app init
  3. precompileTemplates: true,
  4. });

Template7.templates / myApp.templates

应用初始化完成之后,所有的编译好的模板都可以通过 Template7.templates 对象来访问,他还有一个别名是 myApp.templates。模板的名字就是 <script> 标签上的 id 属性

所以,如果我们有下面这些模板:

  1. <script type="text/template7" id="personTemplate">
  2. <p>Hello, my name is {{name}} and i am {{age}} years old</p>
  3. <p>I work as {{position}} at {{company}}</p>
  4. </script>
  5. <script type="text/template7" id="carTemplate">
  6. <p>I have a great car, it is {{vendor}} {{model}}, made in {{year}} year.</p>
  7. <p>It has {{power}} hp engine with {{speed}} km/h maximum speed.</p>
  8. </script>

当应用初始化完成之后,我们可以在JS中这样访问:

  1. var myApp = new Framework7({
  2. //Tell Framework7 to compile templates on app init
  3. precompileTemplates: true
  4. });
  5. // Render person template to HTML, its template is already compiled and accessible as Template7.templates.personTemplate
  6. var personHTML = Template7.templates.personTemplate({
  7. name: 'John Doen',
  8. age: 33,
  9. position: 'Developer',
  10. company: 'Apple'
  11. });
  12. // Compile car template to HTML, its template is already compiled and accessible as Template7.templates.carTemplate
  13. var carHTML = Template7.templates.carTemplate({
  14. vendor: 'Ford',
  15. model: 'Mustang',
  16. power: 300,
  17. speed: 280
  18. });

如果你使用了自定义的辅助方法和模板自动编译,请确保你初始化应用之前注册他们。