这可能听起来很奇怪,但由于这个问题,我过去2个小时一直在敲头。我有一个功能,一旦我按下登录按钮就会触发,按下它时会启动一个Ajax请求。
onEnter: function () {
Ext.Viewport.mask();
var email = Ext.getCmp('email').getValue();
var pass = Ext.getCmp('pw').getValue();
var consegui = 0;
Ext.Ajax.request({
controller: 'AP4.controller.MainCont',
url: 'myurl',
method: 'POST',
callbackKey: 'callback',
jsonData:{"username":'user', "password":'pass'},
success: function(result) {
//Se o webservice nao der erro ele entra aqui, nao quer dizer que tenha
//sido correctamente criado session
// Unmask the viewport
Ext.Viewport.unmask();
Ext.Msg.alert("Login Done! Congrats!");
Ext.Viewport.setActiveItem(this.getRegisto()); **//THIS LINE IS NOT WORKING**
},
failure: function(result){
Ext.Msg.alert("Username ou Palavra passe Incorrectas!");
},
});
},
由于某种原因,setActiveItem无法正常工作,我不知道为什么。任何人都可以帮助我吗?
答案 0 :(得分:1)
我认为你在错误的范围内访问this.getRegisto;
函数,
你有没有检查过成功回调中你想要的对象的this
个关键字点?
要更改成功回调的范围,您只需在scope
调用中添加Ext.Ajax.request
参数,就像这样
Ext.Ajax.request({
url: 'myurl',
method: 'POST',
success: function(result) {
// this will point to ViewPort object here
},
failure: function(result){
Ext.Msg.alert("Username ou Palavra passe Incorrectas!");
},
scope : Ext.Viewport // this is used just for illustration, please specify correct scope here
});
答案 1 :(得分:0)
如果Registo在您的视口中,为什么不使用setActiveItem(某个数字),如果Registro是视口中的第一个项目,那么执行setActiveItem(0);