2017-08-23 11 views
1

私はSocialEngineウェブサイトの提案機能を開発しています。私は挿入されたテキストに基づいて提案をするために、テキストボックスに次のコードを書いています。しかし、注入メソッドは、コントローラによって返されたすべての結果に対して呼び出されていません。それらのいくつかをスキップしています。私はそれが各結果のために一度呼び出すと期待します。私は、コントローラから返されたデータは、それが複数の結果を返しているが、一部のインジェクタは結果だけの数が少ないために呼び出さなっているかチェックしてソーシャルエンジンのオートコンプリート友だちリストが正常に動作しない

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クラスのインスタンスで作業しているコントローラのみ

答えて

0

から返されました。そのソースコードは/externals/autocompleter/Autocompleter.jsにあります。変数maxChoices: 10に注意してください。あなたはコード内の以下の操作量を制限していることに気づくでしょう。この変数の値を必要なものに上書きするだけです。

関連する問題