2012-09-24 15 views
0

我有一個包含用戶名和密碼的兩個字段的表單。我有一個處理程序的[登錄按鈕]。如何從登錄按鈕的處理程序中的字段中獲取這些值,以便爲控制器觸發事件​​?如何在窗體Sencha Touch 2中獲取用戶名和密碼的價值

     handler: function() { 
          var form = this.parent.parent; 
          //HOW TO GET THESE VALUES? 
          var username = form.user; 
          var password = form.password; 
          form.fireEvent('login', username, password); 

         } 

與調試器,我發現這個工作,但看起來像一個非常複雜的解決方案對我說:

   handler: function() { 
        var form = this.parent.parent; 
        var fieldset = form.items.items[0]; 
        var username = fieldset.innerItems[0]._component._value; 
        var password = fieldset.innerItems[1]._component._value; 
        form.fireEvent('login', username, password); 

這是配置聲明代碼。

Ext.define('AddressBook.view.Login', { 
    title: "Luminizer Login", 
    extend: 'Ext.form.Panel', 
    xtype: 'loginForm', 

    config: { 
     url: 'login.php', 
     standardSubmit: false, 
     items: [ 
      { 
       xtype: 'fieldset', 
       title: 'MyCompony', 
       instructions: 'Log in with username and password.', 
       defaults: { 
        required: true, 
        labelAlign: 'left', 
        labelWidth: '40%' 
       }, 
       items: [ 
        { 
         //SCROLL DOWN FOR HANDLER 
         xtype: 'textfield', 
         name: 'name', 
         label: 'Name', 
         value: 'user', 
         autoCapitalize: false 
        }, 
        { 
         xtype: 'passwordfield', 
         name: 'password', 
         label: 'Password', 
         value: 'test' 
        } 
       ] 
      }, 
      { 
       xtype: 'toolbar', 
       docked: 'bottom', 
       items: [ 
        {xtype: 'spacer'}, 
        { 
         text: 'Reset', 
         handler: function() { 
          form.reset(); 
         } 
        }, 
        { 
         text: 'Login', 
         ui: 'confirm', 
         handler: function() { 
          var form = this.parent.parent; 
          //HOW TO GET THESE VALUES? 
          var username = form.user; 
          var password = form.password; 
          form.fireEvent('login', username, password); 

         } 
        } 
       ] 
      } 
     ], 
    ... 
} 
+0

你使用MVC結構嗎? –

回答

1

上嘗試這個代碼

var form = this.parent.parent; 
    var name=form.getValues().firstname 

此代碼無我會給你textfield這個名字的名字是firstname的值。

+0

這對我來說似乎是最簡單的解決方案。謝謝! –

0

的解決方案是給文本字段的ID:

items: [ 
    { 
    xtype: 'textfield', 
    ... 
    id: 'username', 
    ... 
    }, 

和使用函數向下()和getValue()的形式部件

var form = this.parent.parent; 
var username = form.down('#username').getValue()