2012-01-30 6 views
0

여기를 터치하면 새로 고침이 시작됩니다. 나는 많은 자습서를 온라인에서 체크 아웃했다. 텍스트 필드의 값을 가져 오는 데 문제가 있습니다. 로그인 버튼을 클릭 할 때 발생하는 오류는 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 속성을 기반으로 한 값을 얻는 예제를 보았습니다. 그래서 지금 내 질문은 id 또는 name을 기반으로 한 값을 얻으려는 것인가?

답변

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

관련 문제