EmberJS不使用Ember数据

时间:2014-05-27 14:22:11

标签: javascript jquery ajax ember.js frameworks

我一直希望实施正确处理数据传输的方法 ,而不使用 Ember数据

我目前有 Java后端,可以正确处理'获取'& '发布'数据。

这是我的结构。假设我们使用系统的一部分来处理配置。

这是我的模特:

App.ConfigurationRoute = Ember.Route.extend({
      model: function(params) {
           return App.Store.configuration('getConfig');
       }
});

这是我的控制器(注意我有一个configSubmit的动作,它是从视图传递数据的地方):

App.ConfigurationController = Ember.ObjectController.extend({
// initial value
    isExpanded: false,
    actions: {
        configSubmit: function() {

            var data = {
                formsDir: this.get('formsDir'),
                processDir: this.get('processDir')
            } 

            App.Store.configuration('saveConfig', data);
        }
    }
});

这是我的查看代码(注意这个帖子发布到我上面的控制器中的configSubmit操作:

<script type="text/x-handlebars" id="configuration">
  <div class="process-body">
     <div class="processitem form-reader">
        <form>
           <div class="processitem forms-directory">
              <label class="name">Forms Directory:</label>
              {{input id="forms-directory" class="form-control configuration-item" type="text" value=formsDir}}
           </div>
           <div class="processitem process-directory">
              <label class="name">Process Directory:</label>
                 {{input id="process-directory" class="form-control configuration-item" type="text" value=processDir}}
           </div>
        </form>
     </div>
     <button type="submit" class="btn btn-submit btn-default" {{action 'configSubmit'}}>Submit</button>
    </div>

在此之后我 App.store 的名义创建一个新的Ember对象,然后在必要时重新打开。以下是一个例子:

App.Store = Ember.Object.extend();

    App.Store.reopenClass({
       configuration: function( action, data ) {
          if (action === 'getConfig') {
           return $.getJSON("myurlforgettingdata").then(function(data) { 
            if (data.config) {
                return data.config; 
            } else {
                return [];
            }
        });
    }
           if (action === 'saveConfig') {
            $.ajax({type: 'POST', url: 'myurltopost', dataType: 'json',
            data: {
                formsDir: data.formsDir,
                processDir: data.processDir,
            },
            success: function(jsonData) {

            },
            error: function() {

            }
        });
    }

我的问题是,看看这是一个灵活的策略,不仅是一个宁静的后端,还有一些不受欢迎的后端?

注意我可以传递数据以及商店要执行的操作。

1 个答案:

答案 0 :(得分:0)

简答:是的

答案很长:

Ember Data同时很难并且很有帮助。与任何库一样,它为您提供了一系列有趣的功能,但与此同时您又被迫使用它们的api。优点包括但不限于:记录缓存,脏记录检查,回滚,关系,异步关系,承诺准备等等。缺点是它仍然处于测试阶段,关系很棘手,响应很棘手。它是如此棘手的主要原因是缺乏文档,因为它是测试版。

对于那些想要实现所有这些细节或者他们想要的细节的人来说,不使用Ember Data是一个非常好的方法。

我建议你至少包装你的记录&#34;作为Ember.Objects,你可以使用foo.get('property')

var foo = { 
      property: 'value'
};

foo.get('property'); // ERROR get isn't defined on foo
Ember.get(foo, 'property'); // yay w

兽人。     var foo = Ember.Object.create({        财产:&#39;价值&#39;     });

foo.get('property'); // yay, works