我试着在github上直接问这个问题,但这个项目似乎没有太大的进展。如果有人有这样的想法,那就太好了。可以在数据函数中返回promise吗?我已经尝试了以下方法,但似乎不起作用。问题是我试图在data-function中进行一个ajax调用,它需要一个result/data数组。当然,我不能在进行异步ajax调用时这样做。
var ms = $('#mycombo').magicSuggest({minChars: 2, data : function(q) {
return someAPI.findSuggestions(q, currentLang).then(function(response) {
if(!_.isEmpty(response.data.suggestions)) {
_.each(response.data.suggestions, function(suggestion) {
if (suggestion.id && suggestion.label) {
data.push({ id: suggestion.id, name: suggestion.label });
}
});
}
});
return data;
}});如果有其他方法解决这个问题,我将非常感谢您的帮助。
提前谢谢。
迈克尔
发布于 2017-02-16 00:44:18
对于那些感兴趣的人,我已经设法找到了问题的解决方案。正如发布在github (https://github.com/nicolasbize/magicsuggest/issues/281)上的,您需要在初始化期间使用keyup事件,而不是设置data属性。所以它现在看起来像这样:
var ms = $('#mycombo').magicSuggest({minChars: 2});
$(ms).on('keyup', function(e, m, v) {
// ... get data via ajax and call "ms.setData(data)" in the response callback ...
// ... you can use m.getRawValue() to get the current word being typed ...
ms.setData(data);
}这将导致在每次按键后触发ajax调用,因此您可能希望通过添加某种延迟或其他方式来改进这一点。
发布于 2018-01-05 23:46:03
我也是这样做的:
const suggester: any = divElem.magicSuggest({
...more properties here...
data: (query) => {
if (query) {
this.myService.mySearch(query).take(1).subscribe((list) => {
suggester.setData(list);
});
}
return [];
},
...more properties here...
});其中mySearch(查询)返回:
Observable<MyObject[]>https://stackoverflow.com/questions/42201820
复制相似问题