如何重构 js typeahead 实例化
How to refactor js typeahead instantiation
我有以下代码块实例化 typeahead
$("#searchbox").typeahead({
minLength: 3,
}, {
name: "Type0",
displayKey: "name",
source: bloodHound[0].ttAdapter(),
templates: {
header: "<h4 class='typeahead-header'><img src='Type0.png'>Type0</h4>",
suggestion: Handlebars.compile(["{{name}}<br><small>{{address}} </small>"].join(""))
}
}, {
name: "Type1",
displayKey: "name",
source: bloodHound[1].ttAdapter(),
templates: {
header: "<h4 class='typeahead-header'><img src='Type1.png'>Type1</h4>",
suggestion: Handlebars.compile(["{{name}}<br><small>{{address}}</small>"].join(""))
}
}
)
如果我想添加其他类型,例如Type2 我必须复制并粘贴块,因此效率不高。我在一个名为 types 的数组中有可用的类型。
我怎么会有一个代码块来循环数组并创建与上面相同的结果。所有建议表示赞赏。
我不知道你的 types
数组应该是什么样子,但我会这样设置它:
var types = [
{
name: 'Type0',
displayKey: 'Type 0'
},
{
name: 'Type1',
displayKey: 'Type 1'
}
]
var args = types.map(function (type, i) {
return {
name: type.name,
displayKey: type.displayKey,
source: bloodHound[i].ttAdapter(),
templates: {
header: '<h4 class="typeahead-header"><img src="' + type.name + '.png">' + type.name + '</h4>',
suggestion: Handlebars.compile(["{{name}}<br><small>{{address}} </small>"].join(""))
}
}
})
args.unshift({ minLength: 3 })
// Calls typeahead with a variable number of arguments on the search box
$.fn.typeahead.apply($("#searchbox"), args)
我有以下代码块实例化 typeahead
$("#searchbox").typeahead({
minLength: 3,
}, {
name: "Type0",
displayKey: "name",
source: bloodHound[0].ttAdapter(),
templates: {
header: "<h4 class='typeahead-header'><img src='Type0.png'>Type0</h4>",
suggestion: Handlebars.compile(["{{name}}<br><small>{{address}} </small>"].join(""))
}
}, {
name: "Type1",
displayKey: "name",
source: bloodHound[1].ttAdapter(),
templates: {
header: "<h4 class='typeahead-header'><img src='Type1.png'>Type1</h4>",
suggestion: Handlebars.compile(["{{name}}<br><small>{{address}}</small>"].join(""))
}
}
)
如果我想添加其他类型,例如Type2 我必须复制并粘贴块,因此效率不高。我在一个名为 types 的数组中有可用的类型。
我怎么会有一个代码块来循环数组并创建与上面相同的结果。所有建议表示赞赏。
我不知道你的 types
数组应该是什么样子,但我会这样设置它:
var types = [
{
name: 'Type0',
displayKey: 'Type 0'
},
{
name: 'Type1',
displayKey: 'Type 1'
}
]
var args = types.map(function (type, i) {
return {
name: type.name,
displayKey: type.displayKey,
source: bloodHound[i].ttAdapter(),
templates: {
header: '<h4 class="typeahead-header"><img src="' + type.name + '.png">' + type.name + '</h4>',
suggestion: Handlebars.compile(["{{name}}<br><small>{{address}} </small>"].join(""))
}
}
})
args.unshift({ minLength: 3 })
// Calls typeahead with a variable number of arguments on the search box
$.fn.typeahead.apply($("#searchbox"), args)