2012-06-02 90 views
2

我試圖通過參考視圖獲取視圖。在控制器中定義的方法內。我得到的錯誤是Sencha Touch 2-無法從控制器獲取參考視圖

Object [object Object]沒有方法'getUserForm'。

這裏是我的視圖和控制器,我會很高興,如果有人能幫助我..提前

感謝。

用戶表單

Ext.define(appName + '.view.user.UserForm', { 
    extend : 'Ext.form.FieldSet', 
    alias : 'widget.userform', 
    title : 'User Form', 
    instructions: 'Fill your personel information', 
    iconCls : 'icon-form', 
    fullscreen: true, 
    config : { 
     items : [{ 
      xtype  : 'toolbar', 
      docked  : 'top', 
      title  : 'Registeration Form', 
      iconCls  : 'icon-form' 
     }, { 
      xtype  : 'textfield', 
      label  : 'Name ', 
      name  : 'name'    
     }, { 
      xtype  : 'textfield', 
      label  : 'Surname ', 
      name  : 'surname'   
     }, { 
      xtype  : 'passwordfield', 
      label  : 'Password ', 
      name  : 'password' 
     }, { 
      xtype  : 'toolbar', 
      dock  : 'bottom', 
      defaults : { 
       xtype : 'button', 
       flex : 1 
      }, 
      layout  : { pack : 'center' }, 
      items  : [{ 
       text : 'Reset', 
       iconCls : 'icon-refresh-32', 
       ui  : 'action', 
       action : 'reset' 
      }, { 
       text : 'Save', 
       ui  : 'action', 
       iconCls : 'icon-save-32', 
       action : 'save' 
      }] 
     }] 
    } 
}); 

用戶控制器

Ext.define(appName + '.controller.UserController', { 
    extend  : 'Ext.app.Controller', 
    stores  : [ 'Users' ], 
    models  : [ 'User' ], 
    views  : [ 'user.UserList', 'user.UserForm' ], 
    refs  : [{ 
     ref  : 'userList', 
     selector: 'userlist' 
    }, { 
     ref  : 'userForm', 
     selector: 'userform' 
    }], 
    init  : function() { 
     this.control({ 
      'userform button[action=save]' : { 
       release : this.saveUserForm 
      }, 
      'userform button[action=reset]' : { 
       release : this.resetUserForm 
      } 
     }); 
    }, 
    saveUserForm : function(btn) { 
//  Ext.Msg.alert('SUCCESS', 'Form is successfully saved.'); 
     **var form = this.getUserForm();** // ERROR! 
     alert(form); 
//  Ext.Msg.alert('Form Values', JSON.stringify(form.getValues(), null, 2)); 
    }, 
    resetUserForm : function(btn) { 
     **var form = this.getUserForm();** // ERROR! 
//  var form = btn.up('form'); 
     form.reset(); 
    } 
}); 

回答

2

裁判 - 命名ComponentQuery選擇的集合,它可以很容易地得到您的網頁上,以關鍵部件引用。

根據http://docs.sencha.com/touch/2-0/#!/api/Ext.ComponentQuery(它是關於類型可以在「參考文獻」使用選擇的)組件可以通過使用檢索:

1)其的xtype:「面板」,「文本域」等。

2)他們ID: '#idOfYourComponent'

在你的情況:

1)用戶形式

Ext.define(appName + '.view.user.UserForm', { 
    extend : 'Ext.form.FieldSet', 
    xtype : 'userForm' 
    alias : 'widget.userform',

用戶控制器

 
Ext.define(appName + '.controller.UserController', { 
    extend  : 'Ext.app.Controller', 
    stores  : [ 'Users' ], 
    models  : [ 'User' ], 
    views  : [ 'user.UserList', 'user.UserForm' ], 
    refs  : { 
     mySuperMegaForm: 'userForm' 
    } 

2)用戶表單

Ext.define(appName + '.view.user.UserForm', { 
    extend : 'Ext.form.FieldSet', 
    id : 'userFormId' 
    alias : 'widget.userform',

用戶控制器

 
Ext.define(appName + '.controller.UserController', { 
    extend  : 'Ext.app.Controller', 
    stores  : [ 'Users' ], 
    models  : [ 'User' ], 
    views  : [ 'user.UserList', 'user.UserForm' ], 
    refs  : { 
     mySuperMegaForm: '#userFormId' 
    } 
+2

您也可以使用'itemId'而不是'id'。 [itemId](http://docs.sencha.com/touch/2-0/#!/api/Ext.Component-cfg-itemId)在本地作用於容器。你可以用同樣的方式引用前面的#號。 – Justin

相關問題