1

dashboard管理ダッシュボード テンプレートを使用しており、ログインに成功したときにリダイレクトするようにしました。しかし、驚いたことに、ログイン ダイアログが削除され、ルート ハッシュが正常に変更され#dashboardますが、ダッシュボードはレンダリングされません。背景画像を表示中

ログイン成功コールバックのコード スニペットを次に示します。

me.getView().destroy();
me.redirectTo('dashboard');

成功せずに

更新 (ここにコード フローとスニペットがあります)

前述のとおり、AdminDashboard テンプレートが使用されています。ここにルートがあります

routes: {
  'login' : 'loginView',
  ':node': {
    before: 'isUserLoggedIn',
    action: 'onRouteChange'
  }
},

ユーザーがログインしていない場合、明らかな要求が停止され、ログイン ビューに再ルーティングされます (意図したとおり)。

ユーザーが資格情報を送信すると、同じものがバックエンド経由でチェックされ、成功するとユーザーはダッシュボードに再ルーティングされます

onLoginButtonClick: function() {
  var me = this;
  var values = Ext.getCmp('userLoginForm').getValues();
  Ext.Ajax.request({
    url: 'api/user/login',
    params: values,
    method: 'POST',
    success: function(response, opts) {
      me.getView().destroy();
      me.redirectTo('dashboard');
    },
    failure: function(response, opts) {
      console.log('login Failed');
    }
  });
}

これは意図したとおりに機能し、バックエンドにリクエストを発行し、バックエンドはステータス 200 を返します (資格情報が正しい場合)

ただし、このログイン ダイアログが消え、ルート ハッシュが変更された後#dashboardも、ログイン ビューで使用されるバックエンド イメージがページに表示されます (管理ダッシュボード テンプレート)。

これで明確になったと思います コンソールに JS エラーは表示されません 画像が削除されていないだけです

4

1 に答える 1

1

したがって、いくつかのhtmlデバッグの後、最終的にこれを解決しました。これが私がそれを機能させた方法です

管理者ダッシュボードのログイン ウィンドウには、背景画像を含むメイン以外の別のレイアウトがあります。

(ログインが成功すると) 別のページにリダイレクトすると、そのレイアウトではなく loginWindow ビューが削除され、ルーテッド ビューでメイン レイアウトがレンダリングされます。覗き窓をその前に置いたままにします。そのため、ロック ウィンドウも破棄する必要があります。ここに私がそれをした方法があります

var lockingwindow = Ext.ComponentQuery.query('lockingwindow')[0]
if(lockingwindow)
  lockingwindow.destroy();
于 2016-07-07T07:38:51.730 に答える