我有一段代码,可以在页面加载时从后端获取信息
//Bloodhound - Fetches all Project numbers for the current user
var prsysList = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: "../Helper/LookUpProjectNumber/",
cache: false
}
});
//Typeahead on project numbers
$('.typeahead').typeahead({
hint: true,
highlight: true,
minLength: 1
},
{
name: 'prsys',
source: prsysList
});
现在当用户选择一个值时,我想根据他以前的选择来限制他未来的选择。为此,我有另一只猎犬,它向我返回了更新的信息列表
//Bloodhound - Fetches all Project numbers for the current user
var newPrsysList = new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
prefetch: {
url: '../Helper/GetCommonPrsys?prsys=' + encodeURIComponent($selectedPrsys),
cache: false
}
});
//Init the new variable
newPrsysList.initialize();
//Rebind all Typeaheads on project numbers
$('.typeahead').typeahead({
hint: true,
higlight: true,
minlength: 1
},
{
name: 'prsys',
source: newPrsysList
});
我的问题是,尽管我的第二只猎犬有可供用户选择的数据的更新版本,但该列表并未更新。
我在这里做错了什么吗?
最好
我最初的想法是简单地创建一个第二个猎犬变量并用它提前输入我的类型,希望源代码能够自动更新(如上面的问题所述)。事实证明,情况并非如此,我的提前输入数据没有更新。
为了使它工作,我不得不做一个单独的ajax查询,将结果存储到jQuery变量中,使用jQuery变量创建一个猎犬(使用local),最后输入我的typeaheads。
$.ajax({
url: "../Helper/FunctionName",
data: ({ variable1: $var1 }),
type: "GET",
success: function (data) {
//Destroy all typeaheads
$('.typeahead').typeahead('destroy');
var newData= new Bloodhound({
datumTokenizer: Bloodhound.tokenizers.whitespace,
queryTokenizer: Bloodhound.tokenizers.whitespace,
local: data
});
//Init the new variable
newData.initialize();
//Rebind all Typeaheads on project numbers
$('.typeahead').typeahead({
hint: true,
higlight: true,
minlength: 1
},
{
name: 'data',
source: newData
});
return false;
},
error: function (data) {
//Destroy all typeaheads
$('.typeahead').typeahead('destroy');
return false;
}
});
IMO 这应该需要几分钟来实现,但我想要么我没有找到更简单的解决方案,要么负责打字的人没有实现数据源更新。
祝你好运