我正在尝试使用寻血猎犬提前输入功能来搜索我的烧瓶应用程序上的数据库。
我跟着这里走: Twiiter 提前键入自定义模板 - 获取默认示例工作
$(document).ready(function(){
var playerList = [{
"name": "Calvin Ridley",
"team": "ATL",
"id": 14
}, {
"name": "Rob Gronkowski",
"team": "TB",
"id": 15
}];
var players = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace("value"),
queryTokenizer: Bloodhound.tokenizers.whitespace,
local: $.map(playerList, function(d) {
return {
value: d.name,
// pass `playerList` to `suggestion`
suggest: d
}
})
});
players.initialize();
$("#custom-templates .typeahead").typeahead(null, {
name: "best-pictures",
display: "value",
source: players.ttAdapter(),
templates: {
notFound: [
"<div class=empty-message>",
"Unable to find any players that match the current query",
"</div>"
].join("n"),
suggestion: function(data) {
// `data` : `suggest` property of object passed at `Bloodhound`
return "<div><strong>" + data.suggest.name + "</strong>"
+ ' (' + data.suggest.team + ')' + "</div>"
}
}
});
});
这很好用,但我希望能够做的是使用由使用 jsonify 使用 flask 创建的 json 定义的 playerList。
@app.route('/players')
def playerdic():
res=Player.query.all()
list_players=[r.as_dict() for r in res]
return jsonify(list_players)
这将创建一个 json,我相信它与我在本地创建的 json 相同。 在/player 中找到的 json 图像
我想我需要使用预取,但我不确定如何将其链接到"/players",同时仍然允许我使用将 d.name 传递给值并将 d 传递给建议的函数。
我在这里找到了答案.... 寻血猎犬/提前打字:使用带有简单字符串的遥控器
具体使用预回迁部分:
$(document).ready(function(){
var players = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.obj.whitespace("value"),
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: "http://127.0.0.1:5000/players",
filter: function(data){
return $.map(data, function(item){
return {
value: item.name + ' (' + item.team + ')',
suggest: item
};
});
}
}
});
虽然我不喜欢这样,但我需要明确将 URL 设置为"http://127.0.0.1:5000/players"。