2015-02-03 6 views
0

У меня есть файл представления в ExtJS с кодом слушателя, здесь:Автозагрузка панели Слушатель ExtJs

initComponent: function() { 
      Ext.apply(this, { 
       title    : 'Form Order', 
       iconCls    : 'orderIcon', 
       width    : 850, 
       maxHeight   : 600, 
       x     : 200, 
       y     : 50, 
       resizable   : true, 
       resizeHandles  : 's n', 
       constrainHeader  : true, 
       closable   : true, 
       modal    : true, 
       autoShow   : false, 
       autoScroll   : true, 
       overflow   : 'auto', 
       layout: { 
        type: 'auto', 
        align: 'stretch' 
       }, 
       items: [ 
        this.createPanelMC() 
       ] 
      }); 
      this.callParent(arguments); 
     }, 
     createPanelMC: function() { 
      this.requiredSign = '<span style="color:red;font-weight:bold" data-qtip="Required">*</span>'; 
      var panel = Ext.create('Ext.form.Panel', { 
       defaultType: 'textfield', 
       name: 'nodebPanel', 
       width: '100%', 
       layout: { 
        type: 'auto', 
        align: 'stretch' 
       }, 
       items: [{ 
        xtype : 'fieldset', 
        name : 'modlayanan', 
        title : 'Data Pelanggan', 
        layout : 'column', 
        width : '95%', 
        margin : '10', 
        items: [{ 
         xtype   : 'textfield', 
         name   : 'nomor', 
         id    : 'nomor', 
         itemId   : 'nomor', 
         fieldLabel  : 'PSTN', 
         emptyText  : 'Nomor...', 
         margin   : '10 0 0 0', 
         width   : 350, 
         labelWidth  : 100, 
         afterLabelTextTpl: this.requiredSign  
        }, { 
         xtype   : 'textfield', 
         fieldLabel  : 'Speedy', 
         name   : 'speedy', 
         id    : 'speedyVal', 
         itemId   : 'speedyVal', 
         margin   : '10 0 10 20', 
         width   : 350, 
         labelWidth  : 100 
        }, { 
         xtype  : 'textareafield', 
         name   : 'instaLAddress', 
         fieldLabel : 'Alamat Instalasi', 
         emptyText : 'Alamat Instalasi...', 
         readOnly  : true, 
         labelWidth : 100, 
         autofocus: true, 
//listener 
         listeners : { 
          render: function() { 
           this.getEl().on('mousedown', function(e, t, eOpts) { 
           var nopstn = Ext.getCmp('nomor').getValue(); 
           var speedy = Ext.getCmp('speedyVal').getValue(); 

            if (nopstn != '' && speedy != '') { 
             var store = Ext.ComponentQuery.query('#treeProduct')[0].getStore(); 
             console.log(store); 
             store.load({ 
              params: { 
               nopstn: nopstn, 
               speedy: speedy 
              } 
             }); 
            } 
           }); 
          } 
         } 
        }, 
        this.createTreePaketExist(), 
        ] 
       }] 
      }); 
      return panel; 
     }, 
createTreePaketExist: function() { 
      var storeTree = Ext.create('Ext.data.TreeStore', { 
       proxy: { 
        type: 'ajax', 
        url: 'data/newoss_get_paket.php', 
        actionMethods :{ 
         create: 'POST', read: 'POST', update: 'POST', destroy: 'POST' 
        } 
       } 
      }); 

      var groupProduct = Ext.create('Ext.tree.Panel', { 
       store  : storeTree, 
       itemId  : 'treeProduct', 
       renderTo : Ext.getBody(), 
       name  : 'treeProduct', 
       rootVisible : false, 
       useArrows : true, 
       layout  :'fit', 
       margin  : '0 0 0 0', 
       autoScroll : true, 
       height  : 150, 
       width  : '93%', 
       listeners: 
       { 
        checkchange: function(node, checked, eOpts){ 
         node.eachChild(function(n) { 
         node.cascadeBy(function(n){ 
          n.set('checked', checked); 
         }); 
        }); 
        p = node.parentNode; 
        var pChildCheckedCount = 0; 
        p.suspendEvents(); 
        p.eachChild(function(c) { 
         if (c.get('checked')) pChildCheckedCount++; 
          p.set('checked', !!pChildCheckedCount); 
         }); 
        p.resumeEvents(); 
        } 
       } 
      }); 
      return groupProduct; 
     } 

и слушатель будет показывать панель дерева в createTreePaketExist(). проблема в том, что я хочу показать результат панели дерева без щелчка, просто покажите результат, когда панель загружается.
в моем коде, результат будет показан после ввода указателя в textareafield. как это можно просто показать без какого-либо щелчка, просто покажите, когда панель загружена? кто-нибудь может мне помочь? спасибо ..

ответ

0

Я думаю, на это уже был дан ответ в вашем предыдущем Question.

Проблема, с которой вы сталкиваетесь, заключается в том, что ваш магазин зависит от введенных пользователем значений, поэтому ваш магазин не может загрузить, пока пользователь ничего не сделает.

Таким образом, вы не можете автоматически загружать хранилище без значений, если вы не указали значения по умолчанию для загрузки хранилища, а затем можете перезагружать разные данные, если пользователь вводит новую информацию.

Ей трудно дать исчерпывающий ответ на этот вопрос, не зная, какие данные хранятся в магазине, как он фильтруется на основе пользовательских данных, какие данные они могут ввести или вы ожидаете их ввода.

+0

ОК я понял, хорошо .. есть ли решение, если я поставил функцию в контроллер? @Scriptable – DimasW

+0

Могу ли я дать слушателю, если текстовое поле не пустое @Scriptable? – DimasW

+0

Извините, что я только что натолкнулся на этот комментарий, на самом деле не имеет значения, куда вы помещаете эту функцию, дело в том, что данные хранилища недействительны, пока не будут указаны параметры пользователя. он действительно не должен быть функцией, вам нужен только магазин, вы можете отфильтровать его позже – Scriptable

Смежные вопросы