2015-08-20 68 views
0

我試圖創建一個hasMany/belongsTo關聯的記錄。該記錄被創建,但它不保存...Emberjs用hasMany創建記錄/ belongsTo

故事模式:

export default DS.Model.extend({ 
    title: DS.attr('string'), 
    description: DS.attr('string'), 
    tasks: DS.hasMany('task', { async: true }) 
}); 

任務模式:

export default DS.Model.extend({ 
    title: DS.attr('string'), 
    story: DS.belongsTo('story', { async: true }) 
}); 

組件對象:

actions: { 
     createNewTask(){ 
      var taskTitle = this.get('newTaskTitle'); 
      var tasks = this.get('story.tasks'); 
      var story = this.get('story'); 

      this.set('newTaskTitle', ''); 

      this.sendAction('action', taskTitle, tasks, story); 
      this.send('toggleModal'); 
     } 

在上面,story = model和this.get('story.tasks')總是返回一個空數組。

路由對象:

export default Ember.Route.extend({ 
    model: function(params){ 
     return this.store.findRecord('story', params.id); 
    }, 
    actions: { 
     createNewTask(newTaskTitle, tasks, story){ 
      var newTask = this.store.createRecord('task', { 
       title: newTaskTitle 
      }); 

      newTask.save().then(function(task){ 
       //I think the issue is somewhere in here 
       tasks.addObject(task); 
       story.save(); 
      }); 
     } 
    } 

基本上,所創建的任務不被保存與它相關的故事...任何幫助將是巨大的。謝謝!

編輯 這是從我的本地存儲

{ 
    "story":{ 
     "records":{ 
     "3jf2h":{ 
      "id":"3jf2h", 
      "title":"Story1", 
      "description":"Story1", 
      "tasks":[ 
       "6i03h" 
      ] 
     } 
     } 
    }, 
    "task":{ 
     "records":{ 
     "6i03h":{ 
      "id":"6i03h", 
      "title":"T1", 
      "description":"T1", 
      "story":null 
     } 
     } 
    } 
} 
+0

你的意思是「創建的任務沒有與其相關的故事保存」?你有一些錯誤或什麼? –

+0

@GennadyDogaev我編輯了我的問題與json被存儲。每當我創建一個任務時,它就會被添加到故事的任務數組中,但是對於新創建的任務而言,故事爲空 – Jshoe523

+0

因此,您正在使用本地存儲並在那裏尋找。但是,我認爲這裏一切都很好,當燼將從存儲中加載數據時,它將處理關係。 –

回答

1

存儲JSON的事情我來解決亂搞後,但我不知道它的最佳解決方案...

在我的故事路線:

actions: { 
     createNewTask(newTaskTitle, newTaskDesc, tasks, taskType, story){ 
      var newTask = this.store.createRecord('task', { 
       title: newTaskTitle, 
       description: newTaskDesc, 
       status: 'Not Started', 
       type: taskType 
      }); 

      newTask.save().then(function(task){ 
       tasks.addObject(task); 
       story.save().then(function(){ 
        task.set('story', story); 
        task.save(); 
       }); 
      }); 
     } 
    } 

我所做的就是設置保存的故事,一個承諾,並設置任務的故事到新保存的故事。

即使這解決了我的問題,這是做事的正確方法嗎?

相關問題