2014-12-07 21 views
2

我想用hasmany關聯來創建嵌套模型。如何將任何數據添加到父模型?我添加數據到子模型,並希望看到它在父模型的JSON如下 - >EXTJS有很多模型,父模型沒有任何來自子模型的數據

"ChildModel": [{ 
     "field1": "11", 
     "field2": "12", 

    }, { 
     "field1": "13", 
     "field2": "14", 
    }] 


    Ext.define('ParentModel', { 
     extend: 'Ext.data.Model', 
     requires: [ 
      'ChildModel' 
     ], 
     proxy: { 
      type: 'rest', 
      batchActions: true, 
      url: 'test/saveModel', 
      reader: { 
       type: 'json', 
       root: 'childModel' 
      } 
     }, 
     hasMany: [{ 
      model: 'ChildModel', 
      name: 'ChildModel' 
     }] 
    }); 

    Ext.define('ChildModel', { 
     extend: 'Ext.data.Model', 
     fields: [{ 
      name: 'field1' 
     }, { 
      name: 'field2' 
     }] 
    }); 

    # 
    Controller code 
    parent = Ext.create('ParentModel'); 
    child = parent.ChildModel(); 
    Ext.each(selectedProducts, function(item) { 
     child.add({ 
      field1: item.data.f1, 
      fi2ld2: item.data.f2 
     }); 
    }); 

    console.info(child); //has all the records selected in the grid 
    console.info(parent); // has no records 

回答

1

這裏是我的工作代碼示例:

AbstractModel:

Ext.define('Sender.model.AbstractModel', { 
extend: 'Ext.data.Model', 
identifier: 'negative' 
, schema: { 
    namespace: 'Sender.model' 
}}); 

兩個模型繼承自AbstractModel:

工作模型(父)...

Ext.define('Sender.model.Job', { 
extend: 'Sender.model.AbstractModel', 
fields: [ 
    { 
     name: 'date' 
    } 
] 
, validators: [ 
    {type: 'presence', field: 'date'} 
]}); 

...和隊列模型(兒童)在控制器

Ext.define('Sender.model.Queue', { 
extend: 'Sender.model.AbstractModel', 
fields: [ 
    { 
     name: 'people_id' 
     , type: 'int' 
    } 
    , { 
     name: 'message_id' 
     , type: 'int' 
    } 
    , { 
     name: 'jobId' 
     , reference: 'Job' 
    } 
]}); 

使用:

var job = new Sender.model.Job(); 
    job.set('date', new Date()) 
    var queues = job.queues(); 
    for (var i = 0; peoples.length > i; i++) { 
     for (var j = 0; messages.length > j; j++) { 
      var queue = new Sender.model.Queue(); 
      queue.set('people_id', peoples[i].getId()); 
      queue.set('message_id', messages[j].getId()); 
      queues.add(queue); 
     } 
    } 
    queues.save(); 
這樣

,在job.queues()就可以到達兒童

JSON生成依賴於代理類型,在這種情況下:

Request URL:http://sender/Queue?_dc=1418054245301 
Request Method:POST 
Content-Type:application/json 
Request Payload:  
[{"id":-193,"people_id":14,"message_id":18,"jobId":-2},"id":-194,"people_id":14,"message_id":17,"jobId":-2}] 
+0

謝謝你,Tarasn​​n。你可以發佈由queues.save()生成的JSON; – KavitaC 2014-12-08 03:09:35

相關問題