2016-04-11 87 views
0

我試圖使組合加載項目(數據存儲)與AutoLoad:true,但是,我不知道我是否這樣做是正確的。我是一個小新手Extjs,所以,不要粗魯,請嘿嘿Combobox忽略autoLoad [Extjs]

這裏的代碼!

items: [{ 
       xtype: 'form', 
       padding: 20, 
       name: 'formReplyParameters', 
       layout: 'anchor', 
       fieldDefaults: { 
        msgTarget: 'under', 
        labelAlign: 'top' 
       }, 
       defaults: { 
        padding: 10 
       }, 
       items: [{ 
        xtype: 'checkboxfield', 
        name: 'interactive', 
        inputValue: true, 
        fieldLabel: 'Interactive', 
        anchor: '100%' 
       }, { 
        xtype: 'textfield', 
        name: 'timeResponse', 
        fieldLabel: 'Time response', 
        anchor: '100%' 
       }, { 
        xtype: 'combobox', 
        fieldLabel: 'Alert channel', 
        name: 'uuidResponseParameterType', 
        queryMode: 'local', 
        store: new Ext.data.Store({ 
         fields: [{ 
          name: 'description', 
          type: 'string' 
         }, { 
          name: 'name', 
          type: 'string' 
         }, { 
          name: 'uuid', 
          type: 'string' 
         }], 
         autoLoad: true, 
         hideTrigger: true, 
         minChars: 1, 
         triggerAction: 'query', 
         typeAhead: true, 
         proxy: { 
          type: 'ajax', 
          url: "../blabla", 
          actionMethods: { 
           create: "POST", 
           read: "POST", 
           update: "POST", 
           destroy: "POST" 
          }, 
          extraParams: { 
           action: "catalog", 
           catalog: "parametersType", 
           params: JSON.stringify({ 
            uuidToken: Ext.connectionToken 
           }) 
          }, 
          reader: { 
           type: 'json', 
           root: 'List' 
          }, 
          listeners: { 
           exception: function(proxy, response, operation, eOpts) { 
            var responseArray = JSON.parse(response.responseText); 
            Ext.Notify.msg(responseArray.message, { 
             layout: "bottomright", 
             delay: 5000, 
             type: "error" 
            }); 
           } 
          } 
         } 
        }), 
        anchor: '100%', 
        typeAhead: true, 
        triggerAction: 'all', 
        valueField: 'uuid', 
        displayField: 'description', 
        allowBlank: false, 
        listeners: { 
         change: function (combo, value) { 
          var type = combo.valueModels[0].data.name; 
          var channel = me.down('[name="uuidChanel"]'); 
          channel.clearValue(); 
          var channelStore = new Ext.data.Store({ 
           fields: [{ 
            name: 'description', 
            type: 'string' 
           }, { 
            name: 'name', 
            type: 'string' 
           }, { 
            name: 'uuid', 
            type: 'string' 
           }], 
           autoLoad: true, 
           hideTrigger: true, 
           minChars: 1, 
           triggerAction: 'query', 
           typeAhead: true, 
           proxy: { 
            type: 'ajax', 
            url: "../handler/custom/customEvent.ashx", 
            extraParams: { 
             action: "catalog", 
             catalog: type, 
             params: JSON.stringify({ 
              uuidToken: Ext.connectionToken 
             }) 
            }, 
            reader: { 
             type: 'json', 
             root: 'list' 
            }, 
            listeners: { 
             exception: function(proxy, response, operation, eOpts) { 
              var responseArray = JSON.parse(response.responseText); 
              Ext.Notify.msg(responseArray.message, { 
               layout: "bottomright", 
               delay: 5000, 
               type: "error" 
              }); 
             } 
            } 
           } 
          }); 
          channelStore.load(); 
          channel.bindStore(channelStore); 
         } 
        } 
       }, { 
        xtype: 'combo', 
        name: 'uuidChanel', 
        fieldLabel: 'Channel', 
        valueField: 'uuid', 
        displayField: 'description', 
        anchor: '100%', 
        store: null, 
        allowBlank: false 
       }] 
      }] 

的問題是在組合:uuidChannel 如果有人能幫助,非常感謝!

+0

與'name:'uuidChanel''組合配置爲'store:null' ... –

+0

@SergeyNovikov相信我,我嘗試了幾次而沒有'store:null',沒有任何反應。 – Diego

+0

啊,對不起,沒有仔細檢查整個代碼。 –

回答

0

爲什麼你確實認爲autoLoad: true能起作用?因爲當你嘗試打開最後一個組合框時,它仍然在加載?

我覺得你的問題是,新的存儲中創建每次連擊name: 'uuidResponseParameterType'change事件觸發和存儲autoLoad: true意味着

商店的負載方法創建後自動調用

你必須創建商店只需一次,然後在組合change事件中加載(或本地過濾)新的extraParams

+0

Woops,我真的不明白你是什麼意思,呵呵,但是,我修好了! – Diego

0

的事情是,(笨)

channel.clearValue();

此字段正在解決所有問題。這種「clearValue」在那裏,因爲我相信,刪去「的uuid」的數據,它返回我的新數據和「綁定」至底部

channelStore.load(); 
channel.bindStore(channelStore); <<< 

所以,我覺得,我把新的數據,但是這個「明確的價值」,只是在用我綁定的「綁定」來擦除數據。所以,我只是消除channel.clearValue();,這就解決了問題! :)

+0

現在我完全混淆了你實際上在「組合框忽略autoLoad」的意思,因爲在你的代碼示例中'clearValue()'與store'autoLoad'沒有任何關係......你能否更新你的問題,以便它反映你的實際問題?稍後我會更新我的答案,以向您展示您的代碼存在的實際問題。 –

+0

@SergeyNovikov,首先,對不起朋友,回答你太晚了。讓我來解釋一下,我有2個'combobox',第二個沒有數據,但是第一個數據有數據,所以我有一個'change'函數將第一個組合的數據更改爲第二個,'autoLoad:true',應該將第一個'combo'傳遞給第二個的數據加載到第二個,但是像我之前說過的那樣,'clearValue();'已經擦除了我的數據(數據當第一個'combo'傳遞給第二個時)。我不知道你是否明白,但就是這樣! – Diego