我希望有人能帮助我解决这个问题。
我有2棵树。一个在左边,一个在右边。
每棵树都有自己的商店,并且有自己的CRUD api直接功能。但他们拥有相同的模式。 AutoSync 设置为true。
像这样:http://extjs.dev.abteam.si/index.html
以下是代码:
Ext.define('Model', {
extend: 'Ext.data.Model',
fields: [{
name: 'text',
type: 'string'
}, {
name: 'index',
type: 'int'
}, {
name: 'id',
type: 'int'
}, {
name: 'parentId',
type: 'int'
}]
});
Ext.define('Store_left', {
extend: 'Ext.data.TreeStore',
model: 'Model',
root: {
text: 'Root',
id: 0,
expanded: true
},
proxy: {
type: 'direct',
api: {
create: TestAction.create_left,
read: TestAction.read_left,
update: TestAction.update_left,
destroy: TestAction.destroy_left
},
reader: {
type: 'json',
idProperty: 'id'
}
},
autoLoad: true,
autoSync: true
});
Ext.define('Store_right', {
extend: 'Ext.data.TreeStore',
model: 'Model',
root: {
text: 'Root',
id: 0,
expanded: true
},
proxy: {
type: 'direct',
api: {
create: TestAction.create_right,
read: TestAction.read_right,
update: TestAction.update_right,
destroy: TestAction.destroy_right
},
reader: {
type: 'json',
idProperty: 'id'
}
},
autoLoad: true,
autoSync: true
});
Ext.onReady(function () {
new Ext.panel.Panel({
renderTo: Ext.getBody(),
width: 700,
height: 500,
layout: {
type: 'hbox',
align: 'stretch'
},
defaultType: 'treepanel',
defaults: {
rootVisible: false,
flex: 1
},
items: [{
title: 'Left tree',
store: Ext.create('Store_left'),
viewConfig: {
plugins: {
ptype: 'treeviewdragdrop',
}
}
}, {
title: 'Right tree',
store: Ext.create('Store_right'),
viewConfig: {
plugins: {
ptype: 'treeviewdragdrop'
}
}
}]
});
});
问题#1。)
问题是,当我将节点从左侧树移动到RIHGT树时,只有" update_right"直接函数被调用(只有正确的存储被同步,并且左边没有被同步,即使我从左侧树中删除了一个节点并将其放在右侧的树中)
和类似的,
当我将节点从右树移动到左侧树时,只有左侧存储被同步。更重要的是,在左边的树上"更新"调用API而不是"创建"。
我想要的是,当我将节点从左侧树移动到右侧树时,我希望调用destroy_left API,然后调用create_right API函数(因为我从左侧存储中删除了节点并添加了它到正确的商店)。
我在思考正确的方向吗?
问题#2。)
如果我在同一个树中重新排序节点(比如说RIGHT树),则使用完整树作为数据参数调用update_right API。我希望只有2个节点将被发送到服务器 - 更改位置的节点(索引属性)。
你能否告诉我这里缺少什么。
为什么所有节点都被标记为"脏"并发送到服务器,不仅更改节点?
我准备了简单的例子。我必须告诉你,在服务器端更新销毁和创建函数没有实现,但这对测试并不重要,因为你可以尝试打开firebug并查看调用哪些服务器函数。始终只调用更新,永不销毁或创建。
示例网址:http://extjs.dev.abteam.si/index.html
我想在两个(或更多)树之间实现拖放。
我希望有人可以帮助我解决这个问题,因为我搜索了所有互联网,而且我找不到合适的例子。
最好的问候, 安德烈