我有一个 select2 下拉列表,从 ui-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
}
};
}
问题是,如果我不告诉它,即使用户被重定向(实际上是部分)登录,下拉菜单仍然存在。
好的,我知道了。不是很有棱角,但它现在有效:
if (res.status === 401) {
q.element.select2("close");
}