簡體   English   中英

Emberjs使用hasMany / belongsTo創建記錄

[英]Emberjs create record with hasMany/belongsTo

我正在嘗試創建具有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();
            });
        }
    }

基本上,創建的任務不會與其相關的故事一起保存...任何幫助都將是非常有用的。 謝謝!

編輯這是我本地存儲中存儲的json

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

在弄亂事情之后,我想到了一個解決方案,但是我不確定這是否是最好的解決方案...

在我的故事路線中:

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();
                });
            });
        }
    }

我所做的是對已保存的故事作出了承諾,並將任務的故事設置為新保存的故事。

即使這解決了我的問題,這是否是正確的處理方式?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM