2017-05-15 62 views
1

试图理解ExtJS中数据建模的工作原理。ExtJS6/Sencha在单独的ajax调用中加载商店数据

所以,我的服务器在两个独立的ajax调用中返回这样的数据。

首先调用的getProducts()返回类似的东西:

ID id_category名称描述

二Ajax调用,getCategories()返回:

ID名称

当然,我想在表格中显示'产品'数据。 我已经可以使用模型和商店,但在我的表中,我仍然看到id_category,我想在那里显示category_name。

我试图做到这一点使用模型关联和hasOne关系,但它似乎并没有工作,因为数据在两个单独的ajax调用胎动。

我觉得我需要为每列使用“渲染”功能。 (对吗?) 我也可以这样做,但是现在每一列都在进行ajax调用,我想用一个ajax调用来获取类别名称。

在jQuery中,我会简单地做到这一点。 我首先运行getProducts(),然后getCategories()并遍历所有类别以找到正确的类别名称。

不知道如何在Sencha (但当然模式应该是相似的)做到这一点。

我真的很感激,如果有人能帮助我理解这一点。

回答

1

你说得对。您需要在id_category的列中使用渲染器。我假设你有2个独立的商店,例如:store_products和store_category。你用ajax调用填充数据。 (不需要hasOne关系)。 store_products用于在网格/表格中显示产品数据。现在,在渲染你可以做的是,

{ 
    text : 'Category' 
    renderer : function(val) {   
    { 
     var category_record = store_category.findRecord("id_category", val, 0, false, false, true); 
     if(category_record){ 
     return category_record.get('category_name'); 
     } 
     else{ 
     return val;      
     }   
    } 
    dataIndex : 'id_category', 

} 

这样你就不会为每行每一次调用store_category AJAX方法,取而代之的是,商店已经显示数据之前填充。在呈现列的同时,简单地查找记录并返回名称而不是id。

+0

哇,谢谢你的快速和详细的回答 –

+0

帮了我很多,现在我终于明白了,再次感谢 –