2012-03-13 20 views
6

Mam aplikację Sencha Touch 2 MVC z formularzem jako widok. Próbuję uzyskać jego wartości od kontrolera bez powodzenia.Sencha Touch 2 - Jak uzyskać wartości formularza?

Jak można to zrobić? Publikuję mój kod widoku/kontrolera dla tego.

Widok:

Ext.define('MyApp.view.LoginForm', { 
    extend: 'Ext.form.Panel', 
    config: { 
     fullscreen: true, 
     items: [ 
      { 
       xtype: 'fieldset', 
       title: 'Login', 
       id: 'loginform', 
       items: [ 
        { 
         xtype: 'emailfield', 
         name: 'email', 
         label: 'Email' 
        }, 
        { 
         xtype: 'passwordfield', 
         name: 'password', 
         label: 'Password' 
        } 
       ] 
      }, 
      { 
       xtype: 'button', 
       width: '50%', 
       text: 'Login', 
       ui: 'confirm', 
       id: 'btnSubmitLogin' 
      }, 
      { 
       xtype: 'toolbar', 
       docked: 'top', 
       title: 'MyApp Mobile' 
      } 
     ] 
    } 
}); 

i kontroler:

Ext.define("MyApp.controller.LoginForm", { 
    extend: "Ext.app.Controller", 
    config: { 
     refs: { 
      btnSubmitLogin: "#btnSubmitLogin" 
     }, 
     control: { 
      btnSubmitLogin: { 
       tap: "onSubmitLogin" 
      } 
     } 
    }, 
    onSubmitLogin: function() { 
     console.log("onSubmitLogin"); 
     var values = app.views.LoginForm.loginform.getValues(); 
     TryLogin(values['email'], values['password']); 
    }, 
    launch: function() { 
     this.callParent(); 
     console.log("LoginForm launch"); 
    }, 
    init: function() { 
     this.callParent(); 
     console.log("LoginForm init"); 
    } 
}); 

Kod trafi do

console.log("onSubmitLogin"); 

a następnie zatrzymać.

dniu premiery Używam tego:

var LoginForm = Ext.create("MyApp.view.LoginForm"); 
Ext.Viewport.add(LoginForm); 

Tak, jak mogę uzyskać wartości?

Dzięki

Odpowiedz

17

OK. Znalazłem odpowiedź po kilku poprawkach. Dla dobra przyszłych pokoleń - oto rozwiązanie:

Dodałem id:'loginform' do LoginForm a następnie w kontrolerze w części „odn” dodałem loginForm: '#loginform'. Wtedy można go używać jako:

var values = this.getLoginForm().getValues(); 

Powodzenia dla wszystkich

+0

Dziękujemy za przesłanie rozwiązania do tego! Bardzo mi to pomogło. –

0

Spróbuj

Kontroler:

 

    Ext.define("mySIMS.controller.LoginForm", { 
     extend : "Ext.app.Controller", 
     config : { 
      refs : { 
       btnSubmitLogin : "#btnSubmitLogin", 
       LoginForm : '#loginform' 
      }, 
      control : { 
       btnSubmitLogin : { 
        tap : "onSubmitLogin" 
       } 
      } 
     }, 
     onSubmitLogin : function() { 
      console.log("onSubmitLogin"); 
      var values = this.getLoginForm().getValues(); 
      console.log(values); 

      //var values = Oreilly.views.LoginForm.loginform.getValues(); 

     }, 
     launch : function() { 
      this.callParent(); 
      console.log("LoginForm launch"); 
     }, 
     init : function() { 
      this.callParent(); 
      console.log("LoginForm init"); 
     } 
    }); 

Widok:

 

    Ext.define('mySIMS.view.LoginForm', { 
     extend : 'Ext.form.Panel', 
     config : { 
      id : 'loginform', 
      fullscreen : true, 
      items : [{ 
       xtype : 'fieldset', 
       title : 'Login', 
       items : [{ 
        xtype : 'emailfield', 
        name : 'email', 
        label : 'Email' 
       }, { 
        xtype : 'passwordfield', 
        name : 'password', 
        label : 'Password' 
       }] 
      }, { 
       xtype : 'button', 
       width : '8%', 
       text : 'Login', 
       ui : 'confirm', 
       id : 'btnSubmitLogin' 
      }, { 
       xtype : 'toolbar', 
       docked : 'top', 
       title : 'Mobile' 
      }] 
     } 
    }); 

nadzieję, że ten Wsparcie.

+0

Proszę opisać lepiej swoje rozwiązanie. Zobacz: [How to Answer] (http://stackoverflow.com/questions/how-to-answer) – askmish

Powiązane problemy