2012-07-31 99 views
0

我正在動態創建日期選擇器字段。我需要將選擇器字段值設置爲文本字段。不知何故,我無法檢索選擇器值。日期選取器顯示,但完成按鈕拋出一個錯誤說「無法調用‘的未定義Todatestring’日期選擇器sencha touch 2

我的代碼是:

case 'date': 
        var cmp1 = Ext.create('Ext.Button', { 
         text:'Date:', 
         ui:'plain', 
         id:'datepicker', 
         handler:function() { 

          var datePicker = Ext.create('Ext.picker.Date', { 
           dateFormat:'Y-m-d', 
           id:'picker1', 
           doneButton:{ 
            listeners:{ 
             // when the done button is tapped, set the value 
             tap:function (button, event, eOpts) { 
              console.log('inside done button'); 
              console.log(Ext.getCmp('picker1').getValue()); 
              /* var picker = this.up('datepicker'); 
              picker.fireEvent('change', picker, picker.getValue());*/ 
              console.log('done button'); 
             } 
            } 
           } 
          }); 
          Ext.getCmp('overlayId').add(datePicker); 
          datePicker.show(); 
          Ext.getCmp('datefield').setValue(''); 

         } 
        }); 
        Ext.getCmp('overlayId').add({ xtype:'container', padding:10, items:[cmp1] }); 
        var cmp = Ext.create('Ext.field.Text', { 
         //label:'Date:', 
         id:'datefield', 
         listener:{ 
          focus:function() { 
           console.log('on blue function called'); 
          } 
         } 
        }); 
        break; 

回答

1

我覺得你並不需要覆蓋的setValue( )功能直接,更好的方法是覆蓋applyValue()或/和updateValue()函數。 更多信息請參見http://docs.sencha.com/touch/2-0/#!/guide/class_system關於配置屬性以及如何應用/更新/設置模式確實可行

乾杯,奧列格

+0

嗨,我已經修改了基於日期選擇器提供的完成按鈕的代碼。它在控制檯正在打印時進入功能,但我無法檢索該值。任何想法我怎麼得到? – Khush 2012-08-01 05:48:55

+0

我嘗試使用applyValue/updateValue,但它從來沒有進入函數本身。 – Khush 2012-08-06 08:15:17

-1

我有同樣的問題,並通過設置datepicker的值配置得到解決。 爲了獲得新的價值,你實際上需要有一些初始價值。 Check this

1

我知道它的晚,但幫助別人後,你可以用更改偵聽獲取選定的日期值動態

datePicker = Ext.create('Ext.picker.Date', { 
       itemId:'ctsdateselect', 

        value: new Date(), 
        yearFrom: 1985, 
        yearTo : 2050, 

       listeners: { 
        change: function (value, eOpts) { 

console.log(eOpts); 

        }, 
        cancel: function (picker) { 
         Ext.Msg.alert('You hit cancel', ''); 
        } 
       } 

      }); 
datepicker.show();