1

使用:

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 的行时,它不会变脏,也不会在我回滚事务时返回到之前的状态。

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

4

1 回答 1

2

找到了一种解决方法,尽管我仍然希望有一种更清洁的方法可以提供。

我做错的是:我正在操作原始的行数组,添加或删除行,所以 ember 没有检测到任何变化(没有.set('lines', ...))并且它正在回滚到原来的已更改的数组。

我现在正在做的是制作一个新的线条数组(使用方便的.copy()方法)并使用.set('lines', ...)告诉我的模型它的线条值已经改变。

(结论:睡在你的问题上,他们往往会自己解决^^)

于 2013-05-02T11:24:08.860 回答