0

ui-select2 から呼び出される select2 ドロップダウンがあります。ajax 呼び出しを行うカスタム クエリ関数があります。

これが私の問題です。ajax 呼び出しが 401 を取得した場合 (たとえば、ユーザー セッションがタイムアウトした場合)、アプリ全体のハンドラーは、ユーザーをログイン ページ (実際にはページ全体ではなく、部分的なもの) にインテリジェントに再ルーティングしますが、select2 によって制御されるドロップダウンまだそこにあり、コールバックを待っています。

ドロップダウンで空の結果を送信しても、query.callback({results:[]})「結果が見つかりません」と表示されます。

select2 に「このクエリ リクエストのことは忘れて、とりあえず立ち去ってください」と伝えるにはどうすればよいですか?

サンプルコード:

query: function(q) {
  var s = q.term;
  User.query({name:s},function(users) {
    q.callback({results:users}); // THIS WORKS FINE
  }, function(res) {
    if (res.status === 401) {
      // WHAT DO I DO HERE?
      // to tell select2 "hide your drop-down, you are not relevant anymore
    }
  };
}

問題は、ユーザーが (実際には部分的に) ログインにリダイレクトされたとしても、私がそれを言わないと、ドロップダウンが残ることです。

4

1 に答える 1

0

はい、分かりました。あまり角張っていませんが、今のところ機能します:

if (res.status === 401) {
  q.element.select2("close");
}
于 2014-03-30T17:10:55.583 に答える