2012-07-31 62 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();