Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 余烬有许多临时创建但不保存但属于保存的关系_Ember.js_Ember Data - Fatal编程技术网

Ember.js 余烬有许多临时创建但不保存但属于保存的关系

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

大家好,谢谢你们检查这个。我是新来的恩伯,我有一个问题,我的注册和hasMany关系没有保存

我创建了一个Scout模型,作为尚未分配给userAccount的装置

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