2012-03-13 7 views
6

私はビューとしてフォームを持つSencha Touch 2 MVCアプリケーションを持っています。 私はコントローラから値を取得しようとしていますが、成功しません。Sencha Touch 2 - フォーム値を取得するには?

どうすればいいですか?私はこのビュー/コントローラコードを投稿しています。

ビュー:

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' 
      } 
     ] 
    } 
}); 

とコントローラ:

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"); 
    } 
}); 

コードが

console.log("onSubmitLogin"); 

まで移動して停止します。私はこの使用打ち上げで

:だから

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

を、どのように私は値を得ることができますか?

ありがとう

答えて

17

いくつかの調整の後で答えを見つけました。次の世代のために、ここに解決策があります:

私はid:'loginform'をLoginFormに追加してから、 'refs'パートのコントローラにloginForm: '#loginform'を追加しました。この

コントローラ試してみてくださいすべて

+0

解決策を投稿していただきありがとうございます。それは私を大きく助けました。 –

0

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

幸運: それから私はとしてそれを使用することができ

 

    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"); 
     } 
    }); 

を表示:

 

    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' 
      }] 
     } 
    }); 

・ホープ、この 助けて。

+0

あなたの解決策についてもっと説明してください。参照:[回答方法​​](http://stackoverflow.com/questions/how-to-answer) – askmish

関連する問題