Sencha Touch 2 - 在Ajax.Request之后更改视图

时间:2012-04-05 16:10:57

标签: sencha-touch-2

这可能听起来很奇怪,但由于这个问题,我过去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无法正常工作,我不知道为什么。任何人都可以帮助我吗?

2 个答案:

答案 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);