2013-11-18 2 views
2

Мой вопрос с в связи с возможным ответом на этот пост Sencha Touch 2 - How to get form values?Сенча Touch 2 - Получить значения формы с помощью MVC

Im имея тот же вопрос пытается извлечь значения из формы в представлении с помощью контроллера.

Моя текущая ошибка Uncaught TypeError: Объект # имеет нет метод 'GetValues'

Вид:

Ext.define("App.view.Login", { 
extend: 'Ext.form.Panel', 
requires: [ 
    'Ext.field.Password' 
], 
id: 'loginview', 

config: { 
    items: [{ 
     xtype: 'titlebar', 
     title: 'Login', 
     docked: 'top' 
    }, 
    { 
     xtype: 'fieldset', 
     id: 'loginForm', 
     defaults: { 
      required: true 
     }, 
     items: [{ 
      items: [{ 
       xtype: 'textfield', 
       name: 'username', 
       label: 'Username:' 
      }, 
      { 
       xtype: 'passwordfield', 
       name: 'password', 
       label: 'Password:' 
      }] 
     }] 
    }, 
    { 
     xtype: 'toolbar', 
      layout: { 
       pack: 'center' 
      }, // layout 
      ui: 'plain', 
      items: [{ 
       xtype: 'button', 
       text: 'Register', 
       id: 'register', 
       ui: 'action', 
      }, { 
       xtype: 'button', 
       text: 'Login', 
       id: 'login', 
       ui: 'confirm', 
      }] // items (toolbar) 
    }] 
} 

});

Контроллер:

Ext.define('App.controller.Login', { 
extend: 'Ext.app.Controller', 

requires: [ 
    'App.view.Login', 
    'Ext.MessageBox' 
], 

config: { 
    refs: { 
     loginForm: '#loginForm', 
     register: '#register', 
     login: '#login' 
    }, 
    control: { 
     register: { 
      tap: 'loadRegisterView' 
     }, 
     login: { 
      tap: 'loginUser' 
     } 
    }, 

    history: null 
}, 

loadRegisterView: function(btn, evt) { 
    /*var firststep = Ext.create('App.view.Register'); 
    Ext.Viewport.setActiveItem(firststep);*/ 
}, 
loginUser: function(btn, evt) { 
    var values = loginForm.getValues(); 
    console.log(values); 
} 

});

Благодаря

Edit: Так ниже код работает, но его не так, как я вижу все это делать.

var form = Ext.getCmp('loginview'); 

console.log(form.getValues()); 

Все остальные функции this.getLoginView(). GetValues ​​(); , Я не понимаю, что «это» находится в неправильном объеме и где будет объявлен getLoginView? Никто никогда не включает эту информацию в свои фрагменты. Вот еще один пример Sencha Touch 2 - How to get form values?

ответ

1

Добавить xtype ввиду под "ID":

xtype: 'loginform', 

, а затем заменить ссылку на LoginForm с этим:

loginForm: 'loginform', 

Ваш код будет работать. Ошибка, которую вы делали, заключалась в том, что вы пытались получить доступ к методу «formpanel» в «fieldset».

Смежные вопросы