如何使用“set()”设置嵌套记录?

时间:2011-01-04 10:25:53

标签: extjs

我在设置记录值方面遇到了问题。

我在商店里面嵌套了这样的记录:

- data
act_reading // I can set value of this record using -> record.set('act_reading', 'dsds');
adj_reading
act_reading_nested
    - data
        arr_act_colour // How can I set this record?
        arr_act_rating // How can I set this record?
        arr_act_ferrous // How can I set this record?
    idrectype1 // How can I set this record?
adj_reading_nested
    - data
        arr_adj_colour
        arr_adj_rating
        arr_adj_ferrous
    idrectype2

如何在act_reading_nested中设置idrectype1值?

我还必须为arr_act_colour,arr_act_rating和&做同样的事情。 arr_act_ferrous。

先谢谢

2 个答案:

答案 0 :(得分:1)

假设record是变量保持对你的recrd的引用,那不会有效吗?

record.get('act_reading_nested').set('arr_act_colour','value');
record.get('act_reading_nested').idrectype1 = 'something';

是的。刚检查过。

答案 1 :(得分:0)

根据我对Store当前实现的经验你不能:(当我想在GridPanel中编辑非普通商店时,我也面临着这样的问题。请参阅http://www.sencha.com/forum/showthread.php?119573-Event-beforeedit-in-EditableGridPanel&highlight=afteredit < / p>

我自己没有检查它(而是找到了一个黑客解决方法),但更简洁的方法是使用Ext.override(Ext.Store,{...})工具使用您自己的Store实现来修复它。 看看我是如何为“标准”HttpProxy实现的。

Ext.override (Ext.data.HttpProxy, {
    buildUrl : function (action, record) {
        var ret = '';
        if (window.location.pathname != '/') {
            ret = window.location.pathname;
        };
        return ret + Ext.data.HttpProxy.superclass.buildUrl.call(this, action, record);
    }
});

虽然需要一点深入的Extjs内部知识。