初学extjs,网上找了个登录功能的案例,我的理解是填写表单点击按钮就直接给全局变量(是否登录)赋值,然后将当前登录的窗口删除,重新创建主页面的对象。
onLoginClick: function(){
// Set the localStorage value to true
localStorage.setItem("isLogin", true);
// Remove Login Window
this.getView().destroy();
// Add the main view to the viewport
Ext.create({
xtype: 'app-main'
});
},
这是没有与后端结合的,我就给他加了个向后端发送请求,然后实现账号密码正确就跳转页面,错误就弹窗提示。
loginChange: function(){
// Set the localStorage value to true
localStorage.setItem("isLogin", true);
// Remove Login Window
this.getView().destroy();
// Add the main view to the viewport
Ext.create({
xtype: 'app-main'
});
},
onLoginClick: function(){
Ext.Ajax.request({
url:"/openmaint/services/json/session/create",
method:"POST",
params: {
username: Ext.getCmp('username').getValue(),
password: Ext.getCmp('password').getValue()
},
success: function(response, options){
var respText = Ext.util.JSON.decode(response.responseText);
if(respText.success){
this.loginChange();
console.log(respText.response.group);
}else{
Ext.Msg.alert("提示","账号或密码错误!")
}
}
});
但是这样写的话,会在this.loginChange();这一行报错,Uncaught TypeError: this.loginChange is not a function。
如果调换这行代码的位置,放到request方法外面,是不会报错的。所以是不是在request方法里这个this对象并不是当前页面这个对象?这种情况下该如何修改才能实现我想要的效果?location.href这个方法我试过,可以行得通,但是这样的话就得有两个页面(html文件)。不太希望使用这种方法。请大家帮忙解答下,十分感谢!!!