我有这些基本模型(超级简化以显示问题):
App.Alert = DS.Model.extend({
recipients: DS.hasMany('App.Person')
})
App.Person = DS.Model.extend({
name: DS.attr("string")
})
然后我尝试执行以下操作:
var alert = App.Alert.createRecord()
var persons = App.Person.find({page: 1, pageSize: 10})
alert.get("recipients").pushObjects(persons.toArray())
var persons2 = App.Person.find({page: 1, pageSize: 10})
此时我得到:
Uncaught Error: Attempted to handle event `loadedData` on <App.Person:ember592:121878738770883> while in state rootState.loaded.updated.uncommitted. Called with undefined
因此,如果我将对象添加到关系中,它似乎会更改为未提交状态。问题是,如果我有一个带有 hasMany 的模型,并且我希望显示一个搜索对话框,用户可以在其中将更多人添加到警报中,我应该如何继续?搜索通常会导致加载一些已经添加到警报中的对象,因此是脏的。
当前的解决方法是将要添加的内容作为收件人保留在控制器中,并在保存之前添加它们。但是,如果我这样做,并且服务器不批准提交,我只需要回滚收件人以允许用户继续编辑。
管理 hasMany 关系的方法是什么,您还希望让用户搜索相同类型的记录。