2012-01-30 29 views
0

对sencha touch有所触动。我已经在网上查了很多教程。我有一个问题试图获得文本字段的值。我点击登录按钮时发生的错误是Uncaught TypeError: Cannot call method 'getValue' of undefined。这是否意味着我的Ext.getCmp未定义呢?我有这个面板包裹在常规Ext.setup....onReady:.....在Sencha Touch中未定义的getValue

var login = new Ext.Panel({ 
    height:'auto', 
    scroll:'vertical', 
    layout:{ 
     type:'vbox', 
     align:'center' 
    }, 
    items:[ 
     { 
      cls:'launchscreen', 
      html:logo, 
      padding:10 
     }, 
     new Ext.form.FormPanel({ 
      width:300, 
      cls:'loginform', 
      items:[ 
       { 
        xtype: 'fieldset', 
        title: 'Login', 
        items: [ 
         { 
          xtype: 'textfield', 
          name : 'username', 
          label: 'Username', 
          labelWidth: 85 
         }, 
         { 
          xtype: 'passwordfield', 
          name : 'password', 
          label: 'Password', 
          labelWidth: 85 
         } 
        ] 
       }, 
       { 
        xtype: 'button', 
        text: 'Submit', 
        ui: 'confirm', 
        handler:function() 
        { 
         alert(Ext.getCmp('username').getValue()); 
        } 
       } 
      ] 
     }) 
    ] 
}); 

编辑:我能得到的值,如果我设置的文本字段中id属性。我已经看到一些示例,其中id未设置,它们基于name属性获取值。所以我想现在我的问题是我应该得到基于idname的价值?

回答

1

使用Ext.getCmp()你必须提供你想要的值的元素ID。见煎茶API文档的这个:

getCmp(字符串ID) 这是缩略表示Ext.ComponentManager.get。通过ID 参数 查找现有的组件ID:字符串 组件ID

您也可以找到名称的元素,但我认为这是由ID更快,但或许也为浏览器的引擎有点贵。真的不能说任何事情。

无论如何,通过使用findField()方法可以按名称查找字段。使用此方法,您应提供所需字段的ID或名称。见API文档:http://docs.sencha.com/ext-js/4-0/#!/api/Ext.form.Basic-method-findField

例子:

var fieldValue= Ext.getCmp("YourFormID").getForm().findField("FieldName").getValue(); 
+0

是的,我想传递ID是更好的结局。谢谢(你的)信息。我无法在他们的文档中找到getCmp方法 – Ronnie 2012-01-30 21:48:38