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 回答