0

这听起来可能很奇怪,但由于这个问题,我在过去 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 不起作用,我不知道为什么。谁能帮我 ?

4

2 回答 2

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
});
于 2012-04-06T17:40:14.867 回答
0

如果 Registo 在您的视口中,为什么不使用 setActiveItem(some number) 就像如果 Registro 是您视口中的第一个项目,然后执行 setActiveItem(0);

于 2012-04-06T17:21:23.163 回答