ExtJS6 / Sencha在单独的ajax调用中加载存储数据

时间:2017-05-15 05:57:20

标签: extjs

试图了解数据建模在ExtJS中的工作原理。

因此,我的服务器以两个单独的ajax调用返回这些数据。

第一次调用,getProducts()返回类似的内容:

id id_category名称说明

第二次ajax调用,getCategories()返回:

id name

当然我想在表格中显示“产品”数据。 我已经可以使用Model和Store来做到这一点,但在我的表中我仍然看到id_category,我想在那里显示category_name。

我尝试使用模型关联和hasOne关系来做到这一点,但它似乎不起作用,因为数据是在两个单独的ajax调用中获取的。

我认为我需要为每列使用'render'功能。 (我对吗 ?) 我也可以这样做,但是现在每一列都在进行ajax调用,我想通过一个ajax调用来获取类别名称。

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

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

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

1 个答案:

答案 0 :(得分: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。