我正在为SocialEngine网站开发一个建议功能。我在文本框上编写了以下代码,以便根据插入的文本提供建议。但是没有为控制器返回的所有结果调用inject方法。它正在跳过其中一些。我希望每个结果都能调用一次。这是代码 -
new Autocompleter.Request.JSON('global_search_field', '<?php echo $this->url(array('module' => 'user', 'controller' => 'public', 'action' => 'suggest','message' => true), 'default', false) ?>', {
'minLength': 1,
'delay' : 50,
'className': 'message-autosuggest',
'injectChoice': function(token){
console.log("called");
if(token.type == 'user'){
console.log("User");
var choice = new Element('li', {
'class': 'autocompleter-choices',
'id':token.guid
});
new Element('div', {
'html': '<a id="'+token.id+'" href="'+token.url+'">'+token.photo+this.markQueryValue(token.label)+'</a>',
'class': 'autocompleter-choice'
}).inject(choice);
}
else {
console.log("Heading");
var choice = new Element('li', {
'class': 'autocompleter-choices',
'id':token.guid
});
new Element('div', {
'html': '<a class="menu-heading" style="margin:-9px;" id="'+token.id+'" >'+this.markQueryValue(token.id)+'</a>',
'class': 'autocompleter-choice'
}).inject(choice);
}
this.addChoiceEvents(choice).inject(this.choices);
choice.store('autocompleteChoice', token);
},
'onPush' : function(){
if( $('toValues').value.split(',').length >= maxRecipients ){
$('to').disabled = true;
}
}
});
我已经检查了从控制器返回的数据,它返回了多个结果,但是一些注入器只会被调用以获得更少的结果。
更新 - 正在为仅从控制器返回的前10个值调用Injector方法
答案 0 :(得分:0)
您正在使用Autocompleter
类的实例。您可以在/externals/autocompleter/Autocompleter.js
中找到其源代码。注意maxChoices: 10
变量。您会注意到它限制了代码中的操作量。您需要做的就是将此变量的值覆盖为您需要的任何值。