1
今天開始,我對Sencha非常陌生。我有一個基於使用'sencha generate app'命令創建的應用程序的簡單應用程序。Sencha骨架應用程序沒有路由器
所有工作正常,直到我增加了一個控制器,用於登錄進行部署時和運行應用程序,我得到以下錯誤:
Uncaught TypeError: Object #<Object> has no method 'getRouter' Controller.js:476
Ext.define.applyRoutes Controller.js:476
setter sencha-touch.js:5441
Base.implement.initConfig sencha-touch.js:4882
Ext.define.constructor Controller.js:386
Class sencha-touch.js:5170
(anonymous function)
Ext.ClassManager.instantiate sencha-touch.js:6749
Ext.ClassManager.instantiateByAlias sencha-touch.js:6661
Ext.apply.factory sencha-touch.js:9779
Ext.define.factoryItem Container.js:609
Ext.define.add Container.js:682
Base.implement.callOverridden sencha-touch.js:4734
etc......
當我跟蹤這個錯誤似乎在App需要一個路由器對象,但它沒有得到它。我無法找到任何地方如何配置一個路由器(在我看來,應該有一個默認情況下)。
applyRoutes: function(routes) {
var app = this instanceof Ext.app.Application ? this : this.getApplication(),
router = app.getRouter(), // THIS IS WHERE IT FAILS
我已指定所述控制器在所述App.js
views : ['Main', 'Home', 'Contact', 'Login', 'CreateAccount'],
controllers : ['LoginController'],
這是控制器:
Ext.define("MyApp.controller.LoginController", {
extend : "Ext.app.Controller",
xtype : 'logincontroller',
config : {
refs : {
loginForm : "#loginFormPanel"
},
control : {
'button[action=login]' : {
tap : "authenticateUser"
}
},
views : ['Login']
},
authenticateUser : function(button) {
this.getLoginForm().submit({
url : 'php/process_login.php',
method : 'POST',
success : function(form, result) { debugger;
var jsonoutput = Ext.decode(result);
// json parsing
Ext.MessageBox.alert('Error', "Success");
},
failure : function(form, result) {//This block of code is not executing even after JSON response
Ext.MessageBox.alert('Error', "Invalid username/password");
}
});
}
});
登錄表單
Ext.define('MyApp.view.Login', {
extend : 'Ext.form.Panel',
id : 'loginFormPanel',
xtype : 'loginform',
requires : ['Ext.form.FieldSet', 'Ext.field.Password'],
config : {
title : 'Login',
iconCls : 'login',
items : [{
xtype : 'fieldset',
title : 'Logingegevens',
items : [{
xtype : 'textfield',
name : 'username',
label : 'Gebruikersnaam'
}, {
xtype : 'passwordfield',
name : 'password',
label : 'Wachtwoord'
}]
}, {
xtype : 'button',
text : 'Login',
id : 'loginButton',
ui : 'action',
action : 'login'
}]
}
});
感謝您的幫助, 科恩
謝謝,我在開始時加入了一些路線,但它似乎也不起作用,現在它工作:) – 2013-02-26 09:40:35