我正在使用Extjs sencha treestore来存储数据。我想在设置内存代理存储后动态添加新记录。我怎么能这样做?
这是我商店的代码:
Ext.define('Test.store.TreeBufferStore', {
extend: 'Ext.data.TreeStore',
alias: 'store.TreeBufferStore',
storeId:'TreeBufferStore',
parentIdProperty: 'parentId',
autoSync:true,
proxy: {
type: 'memory',
reader: {
type: 'json'
}
}
});
这是我的控制器的代码:
Ext.define('Test.controller.login.LoginController', {
extend: 'Ext.app.ViewController',
alias: 'controller.login',
someButtonClick: function () {
var treeBufferStore = Ext.getStore('TreeBufferStore');
var node = [{
"id": '0',
"parentId": null,
"text": "Hello",
"leaf": record.length == 0 ? true : false
}];
treeBufferStore.getProxy().setData(node);// <== It works well
console.log(treeBufferStore.getProxy().getData());
if(num === 1) {
var childnode = {
"id": '1',
"parentId": '0',
"text": 'World',
"leaf": true
};
treeBufferStore.getProxy().getData().add(childnode); // <== It can not work,how can I do for this?
}
treeBufferStore.load();
}
});
我收到treeBufferStore.getProxy()的错误消息.getData()。add()不是函数。 如果有人知道如何解决它。请帮助我!
先谢谢你,Ben
答案 0 :(得分:0)
treeBufferStore.getProxy()。getData()。添加它没有方法添加。它将返回商店中所有数据的数组。
在ExtJs中,docs提供了使用2方法 store.setRoot()或 store.add()在商店中添加数据的方法。您可以参考ExtJs docs
我已经创建了一个小型演示来向您展示它是如何工作的。 Sencha fiddle example
var store = Ext.create('Ext.data.TreeStore', {
autoSync: true,
autoSync: true,
proxy: {
type: 'memory',
reader: {
type: 'json'
}
}
});
Ext.create('Ext.tree.Panel', {
title: 'Simple Tree',
width: 200,
height: 200,
store: store,
rootVisible: false,
renderTo: Ext.getBody()
});
var objectData = {
expanded: true,
children: [{
text: 'detention',
leaf: true
}, {
text: 'homework',
expanded: true,
children: [{
text: 'book report',
leaf: true
}, {
text: 'algebra',
leaf: true
}]
}, {
text: 'buy lottery tickets',
leaf: true
}]
};
store.setRoot(objectData);