2013年6月15日星期六

【Ember.js入門 2.1】模板: Handlebars基礎

Handlebars基礎

Ember.js使用 Handlebars模板庫 來增強用戶介面。
Handlebars與普通HTML相似,但提供了能改變顯示內容的嵌入表達式 (embed expressions)。
渲染模板後,不需要額外的代碼,內容就能自動更新。

如果你習慣基於縮排的語法,可以熟習Handlebars後嘗試 Emblem.js

定義模板

如果你沒有使用構建工具(build tools),可以在HTML中使用<script>標簽定義模板:
<html>
  <body>
    <script type="text/x-handlebars">
      Hello, <strong>{{firstName}} {{lastName}}</strong>!
    </script>
  </body>
</html>
這個模板會自動編譯成為應用的主模板,它會在應用載入時由路由顯示在頁面。

你可以為模板取一個名字,以便重覆使用。例如一個多次出現的控制面板。如果想保留模板而非即時顯示,你可以使用data-template-name屬性:
<html>
  <head>
    <script type="text/x-handlebars" data-template-name="say-hello">
      <div class="my-cool-control">{{name}}</div>
    </script>
  </head>
</html>

如果你正在使用構建工具管理應用,你應該知道怎樣預編譯Handebars模板並應用於Ember.js

Handlebars表達式

每個模板都有其關聯的控制器,模板會從中尋找要顯示的屬性。

你可以使用花括號包圍屬性名稱,以顯示屬性:
Hello, <strong>{{firstName}} {{lastName}}</strong>!
這會從控制器中搜尋firstNamelastName屬性,插入至HTML中,然後放進DOM。

預設情況下,第一個未命名的模板將與ApplicationController關聯,
App.ApplicationController = Ember.Controller.extend({
  firstName: "Trek",
  lastName: "Glowacki"
});

這個控制器與模板結合後,渲染的HTML為:
Hello, <strong>Trek Glowacki</strong>!

這些表達式(以及之後會提到的其他功能)具綁定機制,即HTML會隨著屬性的改變而自動更新。

隨著應用規模增加,將存在許多的模板,並與不同控制器關聯。

翻譯自:http://emberjs.com/guides/templates/handlebars-basics/
參考:http://emberjs.cn/guides/templates/handlebars-basics/

沒有留言:

發佈留言