Ember.js 入門指南——handlebars條件運算式

來源:互聯網
上載者:User

標籤:

 本系列文章全部從(http://ibeginner.sinaapp.com/)遷移過來,歡迎訪問原網站。

handlebars模板提供了與一般語言類似的條件運算式,比如if、if……else……。

在介紹這些條件運算式之前,我們先做好示範的準備工作。首先我會使用Ember CLI名稱建立route、template,然後在產生的template上編寫handlebars模板代碼。

先產生route:

ember generate route handlbars-conditions-exp-route

或者:ember generate route handlbarsConditionsExpRoute

這兩個命令產生的檔案名稱都是一樣的。最後Ember CLI會為我們自動產生2個主要的檔案:app/templates/ handlbars-conditions-exp-route.hbs  和 app/routes/ handlbars-conditions-exp-route.js

注意:如果你使用的是駝峰式的名稱Ember CLI 會根據Ember的命名規範自動產生以中劃線“-”分隔的名稱。還是就是我為什麼先產生route而不是template呢??因為你產生route的同時Ember CLI會自動給你產生一個對應的模板檔案,如果你是先產生template的話,你還需要手動再執行產生route的命令,即你要執行2條命令(ember generate template handlbars-conditions-exp-route和ember generate route handlbars-conditions-exp-route)

得到示範所需要的檔案後回到正題,開始介紹handlebars的條件判斷運算式。

為了示範先在route檔案添加類比條件代碼:

//  app/routes/handlebars-condition-exp-route.js import Ember from ‘ember‘; export default Ember.Route.extend({        model: function () {              return {name: ‘i2cao.xyz‘, age: 25, isAtWork: false, isReading: false };              // return { enable: true };       }            });

    對於route這個檔案的內容會在後面route這一章詳細介紹,你可以暫且當做是返回了一個對象到頁面上。與EL運算式非常類似,你可以用“.”擷取對象裡的屬性(如:person.name)。

1,  if運算式
 <!-- app/templates/handlbars-conditions-exp-route.hbs --> <!-- if判斷標籤,當熟悉model的值不為 false, undefined, null or [] 的時候顯示標籤內的內容 -->{{#if model}}Welcome back, <b>{{model.name}}</b> !{{/if}}

每個條件運算式都要以“#”開頭並且要有對應的關閉標籤。


啟動並執行時候需要注意兩個地方,一個是URL。如果你也是使用駝峰式的命名方式(產生命名:ember generate route handlbarsConditionsExpRoute),那你的URL跟我的是一樣的,反正你只要記得執行的URL跟你產生的route的名稱是一致的。當然這個名字是可以修改的。在app/router.js裡面修改,在Router.map裡的代碼也是Ember CLI自動產生的。我們可以看到有一個“this.route(‘handlebarsConditionsExpRoute‘);”這個就是你的路由的名稱。

建議:產生之後的路由名字最好不要修改,ember 會根據預設的命名規範尋找route對應的template,如果你修改了router.js裡的名字你需要同時修改app/routes 和 app/templates 裡相對應的檔案名稱。否則URL上的路由無法找到對應的template顯示你的內容。

說明:可能你看到的我給你的有點差別,是因為我修改了主模板(app/index.html)你可以在這個檔案裡添加自己喜歡的樣式,在此就不再贅述,這個不是本文的重點。

2,  if……else……運算式
<!-- app/templates/handlebars-conditions-exp-route.hbs --><!-- if……else……判斷 -->{{#if model.isAtWork}}Ship that code..<br>{{else if model.isReading}}You can finish War and Peace eventually..<br>{{else}}This is else block...{{/if}}

結果是輸出:This is else block...

因為isAtWork和isReading都是false。讀者可以自己修改app/routes/handlebars-condition-exp-route.js裡面對應的值然後查看輸出結果。

3,  unless運算式

unless運算式類似於非操作,當model.isReading值為false的時候會輸出運算式裡面的內容。

<!-- app/templates/handlebars-conditions-exp-route.hbs --><!-- 非判斷 -->{{#unless model.isReading}}unless.....{{/unless}}

如果isReading值為false會輸出unless…否則不進入運算式內。

4,  在HTML標籤內使用運算式

handlebars運算式可以直接在嵌入到HTML標籤內。

<!-- app/templates/handlebars-conditions-exp-route.hbs --><!-- 可以把運算式直接嵌入在某個標籤中,當enable的值為true則結果是增加了一個類(css的類)enable,否則增加‘disable‘ --><span class={{if enable ‘enable‘ ‘disable‘}}>enable or disable</span>

上述運算式其實就是一個三目運算。不難理解。


       上述就是handlebars中最常用的幾個條件運算式,自己作為小例子示範一遍肯定懂了,對於有點驚訝的開發人員甚至看一遍即可。非常的簡單,可能後面還會有其他的條件判斷的運算式,後續會補上。

如果你需要完整的代碼可以從github上下載。


Ember.js 入門指南——handlebars條件運算式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.