同步存储后如何读取其他响应数据

我有以下情况。 我有一个与我的服务器同步的TreeStore。 服务器响应以附加属性'additionalTask​​s'(它为新节点存储一些服务器生成的信息)返回修改的节点数据。 如果所有商店的侦听器都已获得实例化的记录对象而不是原始响应数据,那么如何获取此属性的值? 我已经尝试将这个额外的字段添加到我的模型中,但是当我检查它在侦听器函数中的记录值时,它们显示为空。

    Ext.define('ExtendedTask', {
        extend: 'Ext.data.NodeInterface',
        fields: [
            { name : 'additionalData', type : 'auto', defaultValue : null, persist : false}
        ]
    });

var store = Ext.create("Ext.data.TreeStore", {
    model : 'ExtendedTask',
    autoSync: false,
    proxy : {
        method: 'GET',
        type : 'ajax',
        api: {
            read : 'tasks.js',
            update : 'update.php',
            create : 'update.php'
        },
        reader : {
            type : 'json'
        }
    },
    listeners: {
        update : function(){
            console.log('arguments: ', arguments);
        }
    }
});

这是我的update.php响应:

<?php
echo '[ { "Id" : 1,'.
    '"Name" : "Planning Updated",'.
    '"expanded" : true,'.
    '"additionalData": ['.
    '    {'.
    '        "Name" : "T100",'.
    '        "parentId" : null'.
    '    }'.   
    ']'.
']';
?>

商店的代理始终保留最近请求的原始响应。 尝试这样的事情,看看你需要的信息是否存在。

update : function(){
   console.log(this.proxy.reader.rawData);
}

我遇到了同样的问题。 我最终需要做的是使用标准的树模型属性(我使用了cls )来查找您要加载到模型中的任何自定义数据。 我可能是错的,但从我看待这个问题时,似乎extjs强制树模型只使用标准字段。 他们指出:

如果没有指定模型,将创建一个实现Ext.data.NodeInterface的隐式模型。 标准树字段也将被复制到模型上以保持其状态。 这些字段列在Ext.data.NodeInterface文档中。

但是从测试看来,无论是否指定了模型,似乎只有标准字段可用。 我能找到的解决方法是使用一个标准的字符串类型字段,我不需要像cls ,但我很想看看有没有人找到更好的方法。

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.TreeStore

链接地址: http://www.djcxy.com/p/80025.html

上一篇: How to read additional response data after syncing store

下一篇: Model validation before store sync