我希望任何人都可以帮助我解决这个问题。
我有 2 棵树。一个在左边,一个在右边。
每棵树都有自己的商店,以及自己的 CRUD api 直接函数。但它们共享相同的模型。 自动同步设置为真。
像这样: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。)
问题是,当我将节点从 LEFT 树移动到 RIHGT 树时,仅调用“update_right”直接函数(仅同步右侧存储,而左侧未同步,即使我从左侧树中删除了一个节点并把它丢在右边的树上)
和类似的,
当我将节点从右树移动到左树时,只同步左存储。更重要的是,在左侧树上调用“更新”API 而不是“创建”。
我想要的是,当我将节点从左树移动到右树时,我希望调用 destroy_left API,然后调用 create_right API 函数(因为我从左侧存储中删除了节点并将其添加到右侧店铺)。
我在思考正确的方向吗?
问题#2。)
如果我在同一棵树中重新排序节点(比如说 RIGHT 树),则使用完整树作为数据参数调用 update_right API。我希望只有 2 个节点会被发送到服务器 - 更改位置的节点(索引属性)。
你能告诉我我在这里缺少什么吗?
为什么所有节点都被标记为“脏”并发送到服务器而不仅仅是更改节点?
我准备了简单的例子。我必须告诉你,在服务器端更新destroy和create函数没有实现,但这对于测试并不重要,因为你可以尝试打开firebug并查看调用了哪些服务器函数。Always 仅称为更新,从不销毁或创建。
示例 URL:http ://extjs.dev.abteam.si/index.html
我想在两棵(或更多)树之间实现拖放。
我希望有人可以帮助我解决这个问题,因为我已经搜索了所有互联网,但没有找到有效的示例。
最好的问候,安德烈