我正在为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变量。您会注意到,它限制了下面代码中的操作量。您需要做的就是将此变量的值覆盖为所需的值。

07-27 21:02