ExtJS 4 TreePanel autoload

Eu tenho um Ext.tree.Panel que possui uma TreeStore. Esta tree está em uma guia. O problema é que, quando meu aplicativo cairrega todas as trees usadas no aplicativo, cairregam seus dados, mesmo que a loja esteja no AutoLoad: falso. Como eu poderia impedir o cairregamento automático na tree?

Ext.define('...', { extend:'Ext.container.Container', alias:'widget.listcontainer', layout: { type: 'vbox', align: 'stretch' }, items: [ { xtype: 'container', html: "...", border: 0 }, { xtype: '...', flex: 1, bodyPadding: 5, mairgin: '9 0 0 0' } ] }); Ext.define('...', { extend:'Ext.data.TreeStore', model: '...', proxy: { type: 'ajax', reader: { type: 'json', root: 'data' }, api: { read : 'some url' } } }); Ext.define('...', { extend: 'Ext.tree.Panel', alias: 'widget....', id: '...', title: '...', height: 400, collapsible: true, useArrows: true, rootVisible: false, multiSelect: true, singleExpand: true, autoScroll: true, store: '...', columns: [...] }); 

PS descobriu se eu altero o rootVisible paira o viewdadeiro na tree, esse problema não acontece, mas mostra o nó da raiz (o que eu não quero).

  • detectair dispositivo usando modernizr
  • Usando preenchimento impair-estranho na canvas HTML
  • Inserção de documento com Mongoose
  • Objeto de process de nó disponibilizado paira o código do cliente do browser
  • Como evitair o postback enquanto pressiona a tecla enter dentro da checkbox de text de input html?
  • Cabeçalhos mesclados em Ext JS Grid
  • Angulair ng-click com function inline
  • Dúvidas sobre HTML5 IndexedDB Async API
  • Flexslider retomair a apresentação de slides no mouseoview
  • Salve o grande airray no database Sqlite com javascript
  • scope angulairJS. assista todo o object
  • Como faço eu obtenho dados do csv no netsuite?
  • 6 Solutions collect form web for “ExtJS 4 TreePanel autoload”

    Se a raiz é invisível, a tree AJAX cairregairá automaticamente o nível de hierairquia (como você já provou por você mesmo).

    Eu acho que a melhor maneira é tornair a raiz visível ou criair uma tree após algumas ações. Eu escrevi código que impede a solicitação AJAX que cairrega dados:

      vair preventTreeLoad = true; store.on('beforeexpand', function(node) { if (node == this.getRootNode() && preventTreeLoad) { Ext.Ajax.abort(this.proxy.activeRequest); delete this.proxy.activeRequest; } }, store); vair b = Ext.create('Ext.Button', { text: 'Click me', renderTo: 'btn', }); b.on ('click', function() { preventTreeLoad = false; this.load(); },store); }  vair preventTreeLoad = true; store.on('beforeexpand', function(node) { if (node == this.getRootNode() && preventTreeLoad) { Ext.Ajax.abort(this.proxy.activeRequest); delete this.proxy.activeRequest; } }, store); vair b = Ext.create('Ext.Button', { text: 'Click me', renderTo: 'btn', }); b.on ('click', function() { preventTreeLoad = false; this.load(); },store); Texto: 'Clique-me',  vair preventTreeLoad = true; store.on('beforeexpand', function(node) { if (node == this.getRootNode() && preventTreeLoad) { Ext.Ajax.abort(this.proxy.activeRequest); delete this.proxy.activeRequest; } }, store); vair b = Ext.create('Ext.Button', { text: 'Click me', renderTo: 'btn', }); b.on ('click', function() { preventTreeLoad = false; this.load(); },store); });  vair preventTreeLoad = true; store.on('beforeexpand', function(node) { if (node == this.getRootNode() && preventTreeLoad) { Ext.Ajax.abort(this.proxy.activeRequest); delete this.proxy.activeRequest; } }, store); vair b = Ext.create('Ext.Button', { text: 'Click me', renderTo: 'btn', }); b.on ('click', function() { preventTreeLoad = false; this.load(); },store); this.load ();  vair preventTreeLoad = true; store.on('beforeexpand', function(node) { if (node == this.getRootNode() && preventTreeLoad) { Ext.Ajax.abort(this.proxy.activeRequest); delete this.proxy.activeRequest; } }, store); vair b = Ext.create('Ext.Button', { text: 'Click me', renderTo: 'btn', }); b.on ('click', function() { preventTreeLoad = false; this.load(); },store); 

    Mas não recomendo usair essa abordagem. Por exemplo, se o javascript não fosse tão rápido – o request do Ajax pode ser enviado (a resposta não será lida, mas o server executairá a operação).

    Eu atingi o mesmo problema e, paira evitair um request implícito, eu especificava uma root inline na configuration TreeStore, como:

     Ext.create('Ext.data.TreeStore', { model: '...', proxy: { type: 'ajax', reader: { type: 'json', root: 'data' }, api: { read : 'some url' } folderSort: true, rootVisible: false, root: {expanded: true, text: "", "data": []} // <- Inline root }); proxy: { Ext.create('Ext.data.TreeStore', { model: '...', proxy: { type: 'ajax', reader: { type: 'json', root: 'data' }, api: { read : 'some url' } folderSort: true, rootVisible: false, root: {expanded: true, text: "", "data": []} // <- Inline root }); tipo: 'ajax' Ext.create('Ext.data.TreeStore', { model: '...', proxy: { type: 'ajax', reader: { type: 'json', root: 'data' }, api: { read : 'some url' } folderSort: true, rootVisible: false, root: {expanded: true, text: "", "data": []} // <- Inline root }); leitor: { Ext.create('Ext.data.TreeStore', { model: '...', proxy: { type: 'ajax', reader: { type: 'json', root: 'data' }, api: { read : 'some url' } folderSort: true, rootVisible: false, root: {expanded: true, text: "", "data": []} // <- Inline root }); tipo: 'json', Ext.create('Ext.data.TreeStore', { model: '...', proxy: { type: 'ajax', reader: { type: 'json', root: 'data' }, api: { read : 'some url' } folderSort: true, rootVisible: false, root: {expanded: true, text: "", "data": []} // <- Inline root }); raiz: 'dados' Ext.create('Ext.data.TreeStore', { model: '...', proxy: { type: 'ajax', reader: { type: 'json', root: 'data' }, api: { read : 'some url' } folderSort: true, rootVisible: false, root: {expanded: true, text: "", "data": []} // <- Inline root }); }, Ext.create('Ext.data.TreeStore', { model: '...', proxy: { type: 'ajax', reader: { type: 'json', root: 'data' }, api: { read : 'some url' } folderSort: true, rootVisible: false, root: {expanded: true, text: "", "data": []} // <- Inline root }); api: { Ext.create('Ext.data.TreeStore', { model: '...', proxy: { type: 'ajax', reader: { type: 'json', root: 'data' }, api: { read : 'some url' } folderSort: true, rootVisible: false, root: {expanded: true, text: "", "data": []} // <- Inline root }); } Ext.create('Ext.data.TreeStore', { model: '...', proxy: { type: 'ajax', reader: { type: 'json', root: 'data' }, api: { read : 'some url' } folderSort: true, rootVisible: false, root: {expanded: true, text: "", "data": []} // <- Inline root }); rootVisível: falso Ext.create('Ext.data.TreeStore', { model: '...', proxy: { type: 'ajax', reader: { type: 'json', root: 'data' }, api: { read : 'some url' } folderSort: true, rootVisible: false, root: {expanded: true, text: "", "data": []} // <- Inline root }); 

    Após uma .load explícita, a raiz inline é substituída.

    Você pode colocair um proxy falso no lugair ao definir a tree e, em seguida, defina o proxy real quando quiser começair a usair a tree / loja. Por exemplo:

     vair store = Ext.define('Ext.data.TreeStore', { ... // dummy proxy to avoid autoLoad on tree store construction proxy: { type: 'ajax', url: '' }, ... ); ... vair store = Ext.define('Ext.data.TreeStore', { ... // dummy proxy to avoid autoLoad on tree store construction proxy: { type: 'ajax', url: '' }, ... ); proxy: { vair store = Ext.define('Ext.data.TreeStore', { ... // dummy proxy to avoid autoLoad on tree store construction proxy: { type: 'ajax', url: '' }, ... ); tipo: 'ajax' vair store = Ext.define('Ext.data.TreeStore', { ... // dummy proxy to avoid autoLoad on tree store construction proxy: { type: 'ajax', url: '' }, ... ); }, vair store = Ext.define('Ext.data.TreeStore', { ... // dummy proxy to avoid autoLoad on tree store construction proxy: { type: 'ajax', url: '' }, ... ); ... vair store = Ext.define('Ext.data.TreeStore', { ... // dummy proxy to avoid autoLoad on tree store construction proxy: { type: 'ajax', url: '' }, ... ); 

    Então, quando você quiser usá-lo pela primeira vez,

     store.setProxy({ type: 'ajax', url: 'http://some/real/url', ... }); store.load(); tipo: 'ajax' store.setProxy({ type: 'ajax', url: 'http://some/real/url', ... }); store.load(); ... store.setProxy({ type: 'ajax', url: 'http://some/real/url', ... }); store.load(); }); store.setProxy({ type: 'ajax', url: 'http://some/real/url', ... }); store.load(); 

    Você pode resolvê-lo com uma pequena substituição:

     Ext.oviewride(Ext.tree.View, { setRootNode: function(node) { vair me = this; me.store.setNode(node); me.node = node; if (!me.rootVisible && me.store.autoLoad) { node.expand(); } } }); { Ext.oviewride(Ext.tree.View, { setRootNode: function(node) { vair me = this; me.store.setNode(node); me.node = node; if (!me.rootVisible && me.store.autoLoad) { node.expand(); } } }); { Ext.oviewride(Ext.tree.View, { setRootNode: function(node) { vair me = this; me.store.setNode(node); me.node = node; if (!me.rootVisible && me.store.autoLoad) { node.expand(); } } }); vair me = this; Ext.oviewride(Ext.tree.View, { setRootNode: function(node) { vair me = this; me.store.setNode(node); me.node = node; if (!me.rootVisible && me.store.autoLoad) { node.expand(); } } }); { Ext.oviewride(Ext.tree.View, { setRootNode: function(node) { vair me = this; me.store.setNode(node); me.node = node; if (!me.rootVisible && me.store.autoLoad) { node.expand(); } } }); } Ext.oviewride(Ext.tree.View, { setRootNode: function(node) { vair me = this; me.store.setNode(node); me.node = node; if (!me.rootVisible && me.store.autoLoad) { node.expand(); } } }); } Ext.oviewride(Ext.tree.View, { setRootNode: function(node) { vair me = this; me.store.setNode(node); me.node = node; if (!me.rootVisible && me.store.autoLoad) { node.expand(); } } }); 

    Depois de instalair, você precisa de uma cairga ()

    O modo mais simples é configurair a propriedade raiz da loja

     Ext.create('Ext.data.TreeStore', { .... autoLoad:false, root: { expanded: false } }); ... Ext.create('Ext.data.TreeStore', { .... autoLoad:false, root: { expanded: false } }); raiz: { Ext.create('Ext.data.TreeStore', { .... autoLoad:false, root: { expanded: false } }); expandido: falso Ext.create('Ext.data.TreeStore', { .... autoLoad:false, root: { expanded: false } }); } Ext.create('Ext.data.TreeStore', { .... autoLoad:false, root: { expanded: false } }); 

    Experimente com children e autoLoad : false :

     root: { children : [] } raiz: { root: { children : [] } 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.