EmberJS自定义attr转换以序列化自定义对象数组

时间:2013-05-01 15:47:53

标签: ember.js ember-data

使用:

Ember.VERSION : 1.0.0-rc.1
Handlebars.VERSION : 1.0.0-rc.3
jQuery.VERSION : 1.9.1

我有一个围绕自定义对象列表构建的模型,这些对象使用自定义转换进行序列化和反序列化。它看起来像这样:

DS.RESTAdapter.registerTransform('list', {
  serialize: function(value) {
    return value.mapProperty('line').join("\n");
  },
  deserialize: function(value) {
    return (value || '').split(/\n/).
      map(function(line) { return App.ListItem.new(line: line); });
  }
});
App.ListItem = Ember.Object.extend({
  line: ''
});
App.MySuperModel = DS.Model.extend({
  list: DS.attr('list');
});

它工作正常,当我在列表中添加或删除项时模型变脏,但是当我更新ListItem的行时,它不会变脏,也不会在我回滚事务时返回到先前的状态。

有没有人知道如何让它发挥作用?我宁愿不将关系用于什么只是一个简单的列表,并在我的服务器上保持不变。

1 个答案:

答案 0 :(得分:2)

找到解决问题的方法,不过我仍然会感谢一个更干净的方法会提供一个。

我做错了是:我正在操纵原始的线条数组,添加或删除线条,因此ember没有检测到任何变化(没有 .set('lines',...))它回滚到原来已更改的数组。

我现在正在做的是创建一个新的行数组(使用方便的 .copy()方法)并使用 .set('lines',...)< / strong>告诉我的模型它的行值发生了变化。

(结论:睡觉你的问题,他们倾向于解决自己^^)