2011-05-08 4 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' } 
}); 
Смежные вопросы