ember.js和服务器

我在看Ember.js并阅读文档,试图了解如何使用它。 我明白了(非常好),除了一件事。 以我在MVC模式中思考的方式,Model是应用程序中数据的存储库。 我可以看到Ember.js中的客户端数据是如何工作的。 我没有得到的是如何将数据绑定到服务器,以便在客户端更改数据时,更改将在服务器中更新。 反之亦然。 我一直在做我的Web应用程序进行Ajax / JSON调用来回服务器,我只是没有得到如何使用Ember.js。

在GitHub上挖掘一下emberjs,我发现这个: https : //github.com/emberjs/data :

Ember Data是一个用于从持久层(例如JSON API)加载模型,更新这些模型,然后保存更改的库。 它提供了许多在服务器端ORM(如ActiveRecord)中可以find的function,但专门为浏览器中JavaScript的独特环境而devise。

我也build议阅读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的build议和指导 ,进一步深入服务器端与Ember通信,还提到了emberjs /数据 。

注意 :Emberjs数据库应该谨慎使用,因为它不是生产准备好的。

在Ember.js中, Ember对象中包含的“模型”将包含底层服务器端数据库的进一步抽象(如果使用的话)。 然后,应用程序的控制器部分应该有方法允许您检索和发送在需要时调用的数据,以便更新模型(使用Ajax)。 这很好,因为你有一个模型可以在客户端快速响应用户提供应用程序的任何input(击键,鼠标移动等等),并select性地select何时对服务器端数据库进行相对昂贵的查询。 通过这种方式,应用程序的某些性能不再受到向外部服务器发送数据请求延迟的阻碍,在某些情况下,您可以创build响应性接近本机应用程序的应用程序。

我喜欢像这样拍摄Ember.js

  • 视图和模板相关(显然),调整Views-Class来控制模板(如classNames)
  • 路由器和路由的工作有点像MVC中的控制器。 他们负责将请求路由到正确的端点
  • 控制器和模型是以模型为中心的,一个(模型)描述了你将在你的应用程序中处理的数据,而控制器的行为像一种代理(或装饰器,如果这更像你的胡同)。 例如,模板将连接到控制器

基本上这意味着你用你的控制器加载你的控制器(单个或者数组),现在可以很容易地在你的控制器中build模在这个模型上工作的进程(也就是在核心/数据中不触及模型的东西)。 对于示例博客应用程序,您将在模型中描述post ,并为控制器添加类似内容

 App.PostController = Ember.ObjectController.extend({ content: null, // initial value isExpanded: false, expand: function() { this.set('isExpanded', true) }, contract: function() { this.set('isExpanded', false) } }); 

现在,您可以通过控制器在前端思考方面与模型表示进行交互。 扩展一个post与否不会改变模型,只会改变数据。

在从服务器重新加载数据方面,我有两个答案给你

  1. 我发现这篇文章在理解连接(和简单的轮询,尽pipe很简单)
  2. 如果您使用的是Rails,那么即将到来的Rails 4 Live将会是幸运的,看到这篇文章并演示多汁的部分

我意识到这是一个古老的问题,但它是在ember.js的最高评级页面,所以我想我会补充一点。

我最近一直在使用ember-model来处理RESTful数据绑定。 它有更less的花里胡哨,但为了我的需要,这是相当不错的。 基本上,它只是扩展了模型function,以便与通过标准REST接口推送JSON对象的服务器相当好地集成。