【问题标题】:Ember data RestAdapter embedded hasManyEmber 数据 RestAdapter 嵌入 hasMany
【发布时间】:2014-08-10 21:39:32
【问题描述】:

如何使用 ember-data 进行这项工作?

{"poll":{"id":1,"question":"lym features",
    "choices":[{"id":1,"text":"Improve AI", "PollId":1},
               {"id":2,"text":"Multiplayer","PollId":1},
               {"id":3,"text":"Modern Art","PollId":1}]}}

这是我来自服务器的 json 响应。我需要 ember data RESTAdapter 来解析它。

【问题讨论】:

    标签: javascript ruby-on-rails node.js ember.js ember-data


    【解决方案1】:

    您可以使用 EmberData EmbeddedRecordsMixin http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html 并将 choices 设置为嵌入。

    【讨论】:

      【解决方案2】:

      我必须覆盖DS.RESTSerializer 中的extractSingle 方法。详情见代码中的emberjs链接。

      // http://stackoverflow.com/questions/14320925/how-to-make-embedded-hasmany-relationships-work-with-ember-data
      // http://emberjs.com/api/data/classes/DS.RESTSerializer.html#method_extractSingle
      App.PollSerializer = DS.RESTSerializer.extend({
          extractSingle: function(store, type, payload, id) {
              var poll = payload.poll;
              var choices = poll.choices;
              delete poll.choices;
      
              poll.choices = [];
      
              choices.forEach(function(c) {
                  poll.choices.push(c.id);
              });
      
              payload = { choices: choices, poll: payload.poll };
              return this._super(store, type, payload, id);
          }
      });
      

      这会将我原来的结构变成标准形式。

      注意:投反对票的无知傻瓜,有没有更简单的方法可以做到这一点,我是否陷入某种陷阱,请解释一下。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-09
        • 1970-01-01
        • 1970-01-01
        • 2015-11-17
        • 1970-01-01
        • 2012-12-28
        • 2013-09-09
        • 1970-01-01
        相关资源
        最近更新 更多