ExtJS 6.0.2:ノード順序を変更した後にツリーパネルを保存する
ツリーパネルのインデックス順の変更をサーバーに送信する必要があります。
これを読んだ後:Ext 4.2 Using proxy to save treeこのExtJs Store.save()?とHow to save JSON file when use it as ExtJs grid storeと、いくつかの混乱煎茶のドキュメント...
1)私は、私の店のプロキシでライターを設定する必要があります。結果:何もありません。
2)私のストアにautoSync:true
を設定する必要があります。結果:何もありません。
3)fields
プロパティを設定する必要があります。結果:何もありません。
4)属性をfields
プロパティに入れる必要があります。結果:私のサーバーは呼び出しを検出しましたが、要求パラメータリストには何も付属しませんでした。
5)writer
にrootProperty:'data'
属性を入れる必要があります。結果:うわー!私のサーバーは、スワップする2つのノードを持つJSON文字列を検出しました。私が間違ってやっている2つのスワップのノードが起こることを開始する2つの親ノードと非常に奇妙なものに置き換えられました...
:
data = [{"index":5,"id":"6"},{"index":4,"id":"12"}]
すべての良い、しかし私は、担保効果を気づきました?試した後
Parking
とContinentes
を交換する:前
マイストア:
var layerStore = Ext.create('Ext.data.TreeStore', {
autoSync:true,
fields: [
{ name: 'index', type: 'int' },
{ name: 'text', type: 'string' },
{ name: 'serviceUrl', type: 'string' },
{ name: 'layerName', type: 'string' },
{ name: 'originalServiceUrl', type: 'string' }
],
proxy: {
type: 'ajax',
url: 'getLayersTreeNode',
reader: {
type: 'json'
},
writer: {
type:'json',
allowSingle:false,
encode:true,
rootProperty:'data'
}
},
root: {
text: 'Camadas',
id: 0,
index:0,
expanded: true
},
listeners : {
write: function(store, operation, opts){
alert("Fired!");
}
}
});
マイツリー:
var layerTree = Ext.create('Ext.tree.Panel', {
store: layerStore,
viewConfig: {
plugins: {
ptype: 'treeviewdragdrop',
}
},
scrollable: true,
scroll: 'both',
height: 350,
width: 300,
flex:1,
useArrows: true,
dockedItems: [{
xtype: 'toolbar',
items: [{
text: 'Expandir',
handler : layerTreeExpandir
}, {
text: 'Recolher',
handler : layerTreeRecolher
}]
}],
listeners: {
itemclick: layerTreeItemClick,
checkchange: function(node, checked, eOpts){
node.eachChild(function(n) {
node.cascadeBy(function(n){
n.set('checked', checked);
});
});
//check parent node if child node is check
p = node.parentNode;
var pChildCheckedCount = 0;
p.suspendEvents();
p.eachChild(function(c) {
if (c.get('checked')) pChildCheckedCount++;
p.parentNode.set('checked', !!pChildCheckedCount);
p.set('checked', !!pChildCheckedCount);
});
p.resumeEvents();
}
}
});
A JSONツリーの応答:
[{"checked":false,"cls":"","id":"1","idNodeParent":27,"index":0,"layerName":"osm:highway-label","leaf":true,"originalServiceUrl":"","serviceUrl":"http://192.168.25.25:8080/geoserver/osm/wms","text":"Nomes das Vias"},{"checked":false,"cls":"","id":"2","idNodeParent":27,"index":1,"layerName":"osm:vias","leaf":true,"originalServiceUrl":"","serviceUrl":"http://192.168.25.25:8080/geoserver/osm/wms","text":"Vias"},{"checked":false,"cls":"","id":"3","idNodeParent":27,"index":2,"layerName":"osm:placenames-medium","leaf":true,"originalServiceUrl":"","serviceUrl":"http://192.168.25.25:8080/geoserver/osm/wms","text":"Nomes de Localidades"},{"checked":false,"cls":"","id":"4","idNodeParent":27,"index":3,"layerName":"osm:parking-area","leaf":true,"originalServiceUrl":"","serviceUrl":"http://192.168.25.25:8080/geoserver/osm/wms","text":"Parking"},{"checked":false,"cls":"","id":"5","idNodeParent":27,"index":4,"layerName":"land","leaf":true,"originalServiceUrl":"","serviceUrl":"http://192.168.25.25:8080/geoserver/osm/wms","text":"Continentes"},{"checked":false,"cls":"","id":"24","idNodeParent":27,"index":5,"layerName":"osm:powergenerator","leaf":true,"originalServiceUrl":"","serviceUrl":"http://192.168.25.25:8080/geoserver/osm/wms?","text":"Geradores"}]
名前の変更は、私がルートJSONノードを送り返していることが分かりました。私は、すべての要求に応答しなければならないことを知らなかった。ここから少し助けてください:https://www.sencha.com/forum/showthread.php?107217-JSON-Response-Format-for-HTTPProxy-on-create-update –
今私はその種類を知る方法を発見する必要があります適切な応答を返すためにクライアントが行っている操作。 –