我正在为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个值将调用注入器方法
最佳答案
您正在使用Autocompleter
类的实例。您可以在/externals/autocompleter/Autocompleter.js
中找到其源代码。注意maxChoices: 10
变量。您会注意到,它限制了下面代码中的操作量。您需要做的就是将此变量的值覆盖为所需的值。