[英]ember.js and the server
我正在看Ember.js,並一直在閱讀文檔,試圖了解如何使用它。 我得到它(相當不錯),除了一件事。 根據我在MVC模式中的思考方式,Model是應用程序中數據的存儲庫。 我可以看到它對Ember.js中的客戶端數據有何用處。 我沒有得到的是如何將數據綁定回服務器,以便在客戶端數據發生變化時,更改將在服務器中更新。 反之亦然。 我一直在我的Web應用程序中執行此操作,使Ajax / JSON調用來回到服務器,我只是沒有得到如何使用Ember.js。
在GitHub上挖掘一下emberjs,我發現了這個: https : //github.com/emberjs/data :
Ember Data是一個庫,用於從持久層(例如JSON API)加載模型,更新這些模型,然后保存更改。 它提供了許多您在服務器端ORM(如ActiveRecord)中找到的工具,但它是專為瀏覽器中JavaScript的獨特環境而設計的。
我還建議閱讀Ember.js Live Collections 。 你想要的是擁有一組知道如何與服務器端同步的模型,可能的示例代碼是:
// our model
App.Person = Ember.Object.extend();
App.people = Ember.ArrayController.create({
content: [],
save: function () {
// assuming you are using jQuery, but could be other AJAX/DOM framework
$.post({
url: "/people",
data: JSON.stringify( this.toArray() ),
success: function ( data ) {
// your data should already be rendered with latest changes
// however, you might want to change status from something to "saved" etc.
}
});
}
});
然后在需要的時候調用App.people.save()
。
另外一定要查看這篇文章, 關於使用Ember.js的建議和說明,更深入地了解與Ember的服務器 - 客戶端通信,還提到了emberjs / data 。
注意 :Emberjs數據庫應該謹慎使用,因為它不是生產就緒的。
在Ember.js中, Ember
對象中包含的“模型”將包含底層服務器端數據庫的進一步抽象,如果您使用的話。 然后,應用程序的控制器部分應該具有允許您檢索和發送在需要時調用的數據的方法,以便更新模型(使用Ajax)。 這很好,因為你有一個模型可以在客戶端快速響應用戶提供應用程序的任何輸入(按鍵,鼠標移動等),並有選擇地選擇何時對服務器端數據庫進行相對昂貴的查詢。 這樣,應用程序的某些性能不再受到外部服務器數據請求延遲的阻礙,這在某些情況下可以允許您創建響應速度接近本機應用程序的應用程序。
我想像這樣成對地描繪Ember.js
基本上,這意味着您使用模型加載控制器(單個或數組),現在可以輕松地在控制器中模擬在該模型上工作的過程(即,在其核心/數據中不接觸模型的內容)。 對於示例博客應用程序,您將在模型中描述Post並為控制器添加類似的內容
App.PostController = Ember.ObjectController.extend({
content: null,
// initial value
isExpanded: false,
expand: function() {
this.set('isExpanded', true)
},
contract: function() {
this.set('isExpanded', false)
}
});
現在,您可以通過控制器在前端思維方面與模型的表示進行交互。 是否擴展帖子不會更改模型,只會更改數據。
在從服務器重新加載數據方面,我有兩個答案
我意識到這是一個問題有點陳舊,但它是在ember.js評價最高的頁面上,所以我想我會添加一些。
我最近一直在使用ember-model來處理RESTful數據綁定。 它有更少的花里胡哨,但根據我的需要它是相當不錯的。 基本上,它只是擴展了模型功能,以便與通過標准REST接口推送JSON對象的服務器相當好地集成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.