2011-05-08 23 views
2

是否可以創建一些Ext.data.Field,它將從嵌套數據中獲取其值?來自嵌套數據的計算字段

我已經試過這一點,但它不工作:

Ext.define('User',{ 
    extend: 'Ext.data.Model', 
    fields: [ 
    {name: 'id', type: 'int'}, 
    {name: 'sum', type: 'float', persist: false, 
     convert: function(value, record) { 
     return record.products().sum('cost'); 
     }} 
    ], 
    hasMany: 'Product' 
}); 

Ext.define('Product',{ 
    extend: 'Ext.data.Model', 
    fields: [ 
    {name: 'id', type: 'int'}, 
    {name: 'cost', type: 'float'} 
    ] 
}); 

我從服務器在單個響應加載數據。 此時我必須趕上修改產品型號數據的事件,並手動更新User總和字段。

回答

0

試試這個:

Ext.define('Product',{ 
    extend: 'Ext.data.Model', 
    fields: [ 
    {name: 'id', type: 'int'}, 
    {name: 'cost', type: 'float'} 
    ] 
}); 

Ext.define('User',{ 
    extend: 'Ext.data.Model', 
    fields: [ 
    {name: 'id', type: 'int'}, 
    {name: 'sum', 
     convert: function(value, record) { 
     var sum = 0; 
     Ext.each(record.products, function(cost){ sum += cost; }); 
     return sum; 
     }} 
    ], 
    hasMany: { model : 'Product', name : 'products' } 
});