试图了解数据建模在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中如何做到这一点 (但当然模式应该类似)。
如果有人能帮我理解,我真的很感激。
答案 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。