Ember.js 余烬有许多临时创建但不保存但属于保存的关系
大家好,谢谢你们检查这个。我是新来的恩伯,我有一个问题,我的注册和hasMany关系没有保存 我创建了一个Scout模型,作为尚未分配给userAccount的装置Ember.js 余烬有许多临时创建但不保存但属于保存的关系,ember.js,ember-data,Ember.js,Ember Data,大家好,谢谢你们检查这个。我是新来的恩伯,我有一个问题,我的注册和hasMany关系没有保存 我创建了一个Scout模型,作为尚未分配给userAccount的装置 App.Scout = DS.Model.extend( product: DS.attr('string') condition: DS.attr('string') price: DS.attr('number') userAccount: DS.belongsTo('userAc
App.Scout = DS.Model.extend(
product: DS.attr('string')
condition: DS.attr('string')
price: DS.attr('number')
userAccount: DS.belongsTo('userAccount')
)
App.Scout.FIXTURES = [
{
id: 1
product: 'Clothing Hamper'
condition: 'Not Smelly'
price: 25
}
]
App.UserAccount = DS.Model.extend
email: DS.attr('string')
password: DS.attr('string')
scouts: DS.hasMany('scout')
然后我转到创建的scout路径,注册用户,并尝试在用户和scout之间创建关系。用户注册后,它会转到交换机,交换机会检查App.currentUser.get('scouts.length'),如果该值=1,则会将其重新路由到scout路径
App.Router.map ->
this.resource 'switchboard'
this.resource 'scout', { path: '/scouts/:scout_id' }
App.ScoutRoute = Ember.Route.extend
model: (params) ->
@store.find 'scout', params.scout_id
afterModel: ->
console.log("after transition currentUser's scout length: {App.currentUser.get('scouts.length')}") unless App.currentUser is null
actions:
createAccount: ->
@currentModel.set('userAccount', App.currentUser)
App.currentUser.get('scouts').pushObject(@currentModel)
App.currentUser.save()
App.SwitchboardRoute = Ember.Route.extend
beforeModel: ->
console.log("before transition currentUser's scout length: {App.currentUser.get('scouts.length')}")
if App.currentUser.get('scouts.length') == 1
@transitionTo('scout', App.currentUser.get('scouts.firstObject').id)
App.ScoutController = Ember.ObjectController.extend
foo: App.get('currentUser.scouts.length')
App.UsersNewController = Ember.ObjectController.extend(
identification: null
password: null
actions:
createAccount: ->
user = @store.createRecord('userAccount',
email: @get('identification')
password: @get('password')
)
user.save()
@transitionToRoute('switchboard')
App.currentUser = user
true
)
因此,对于重新路由,这等于1,但在重新路由完成后,当我在控制台App.currentUser.get('scouts.length)中键入它或查看余烬检查器数据时,用户没有将scout附加到它。此外,userAccount仍然连接到Scout,就像它没有以另一种方式保存它一样
任何帮助都将不胜感激。我还创建了一个jsbin来查看它
谢谢 我不熟悉您正在使用的js符号,但在我看来,在创建新用户时,您必须推动“scout”模型。因此,在执行user.save()之前,您可能需要在coffeescript中添加等效的user.get(“scouts”).pushObject(SCOUT模型),我的想法是,我希望UserNewController只处理注册,因为人们可以注册而无需添加SCOUT。因此,这就是为什么我试图创建气泡,它最终将从UsersNewController传递到Scout路由。只是不明白为什么要创建连接,当连接到交换机时会工作,但当它完成转换时,连接就会丢失。这有帮助吗?在@currentModel.set('userAccount',App.currentUser')之后立即在ScoutRoute->createAccount action App.currentUser.get(“scouts”).pushObject(@currentModel)中添加一行是一个好主意,但这不会改变任何事情,所有事情的行为都是一样的。我将对示例进行编辑,以将其包括在内。我想这可能与fixture adapter有关,但现在对此非常困惑。您在应用程序中的
@currentModel
设置在哪里。Scout route