2012-12-06 44 views
3

我在探索移動框架,並且遇到了Ember.js。我喜歡MVC模型,但我很好奇通常如何處理視覺元素。例如,使用jQuery Mobile,您可以輕鬆創建移動優化的表單元素(按鈕,滑塊,切換開關等)。您也可以處理頁面轉換。這些類型的視覺元素似乎超出了Ember.js的範圍。使用Ember.js處理視覺元素

大多數人會使用Ember.js與處理視覺元素的另一個框架(如jQuery Mobile)結合嗎?

回答

1

Ember在內部使用jQuery,並傾向於使用jQueryUI小部件。人們遇到的主要問題是ember呈現視圖和jQueryUI小部件丟失事件處理程序(通常很容易解決)的動態特性。

理想情況下,您可以使用Ember視圖圖層爲滑塊創建自定義視圖,如果需要,那些自定義視圖可以包裝外部小部件。

https://github.com/flamejs/flame.js

FlameJS也是一個有趣的項目,它提供了很多你在問什麼。

+0

你可以闡述有點「燼如何呈現的觀點和jQueryUI的部件丟失事件處理程序(通常是容易解決)。」感謝, – GeorgeW

+0

由於視圖在運行時不會渲染到dom中,因此您無法在腳本的任何時刻簡單地設置小部件。我發現最好的做法是在視圖didInsertElement或afterRender回調上初始化小部件。 –

1

您可以使用從Ember.View類繼承的didInsertElement函數輕鬆地將基於jQuery的插件和框架與Ember集成在一起。一個簡單的例子是使一個日期選擇器:

App.DatePicker = Em.TextField.extend({ 
    didInsertElement: function() { 
     this.$().datepicker(); 
    } 
}); 

在這個例子中,$()是$(this.element)灰燼短手和文字輸入插入之後創建的日期選擇器進入dom。您可以使用Ember的內置觀察器和屬性綁定來處理更改。

jQueryMobile特別需要一些配置來允許Ember控制路由和鏈接。一個很好的例子是https://github.com/LuisSala/emberjs-jqm

0

你檢查過bootstrap.js嗎?他們的所有樣式都會自動縮放以適應任何大小的屏幕顯示,並且不需要任何特別的東西集成到手柄模板中,只需添加適當的類並基本處理其餘的部分。

http://twitter.github.com/bootstrap/