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