ExtJS 4.2 - 有一个远程加载商店,它可以附加记录而不是替换它们吗?

时间:2013-07-09 08:41:30

标签: javascript extjs extjs4 extjs4.2

我有一个商店,我想将一些初始值硬编码到。然后,当它从服务器加载时,我希望它将结果附加到初始值,而不是替换它们。这可能吗?

这就是我现在所拥有的:

var myStore = Ext.create("Ext.data.Store",{
  autoLoad: true,
  fields:[
    {name:"id", type:"int"},
    {name:"username", type:"string"}
  ],
  data: [
    {id: 1, name: "User1"},
    {id: 2, name: "User2"}
  ],
  proxy: {
    type: 'ajax',
    url: 'users.php?method=getUsers',
    reader: {
      type: 'json',
      root: 'results'
    }
  }
});

我希望将从PHP脚本返回的数据添加到商店中已有的“User1”和“User2”。

2 个答案:

答案 0 :(得分:6)

试试这个:

store.load({
    addRecords: true
})

答案 1 :(得分:0)

我最终得到的解决方案是在商店的load事件上安装一个监听器,并在每次商店重新加载时手动添加默认数据:

var myStore = Ext.create("Ext.data.Store",{
  autoLoad: true,
  fields:[
    {name:"id", type:"int"},
    {name:"username", type:"string"}
  ],
  proxy: {
    type: 'ajax',
    url: 'users.php?method=getUsers',
    reader: {
      type: 'json',
      root: 'results'
    }
  },
  listeners: {
    load: function(){
      var me = this;
      me.add({id: 1, name: 'User1'});
      me.add({id: 2, name: 'User2'});
    }
  }
});

这仍然无法解决每次如何让商店附加数据的问题,但幸运的是这个解决方案对我来说还可以!