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 に答える