2017-01-19 2 views
1

私が見てきた人々がBloodhoundが自分のコンストラクタでこのようなajaxオブジェクトを含めることによってtypeahead.jsに実行されたAJAX要求の設定を無効にする方法:しかしブラッドハウンドのアヤックス「グローバル」フラグ(Typeahead.js)

var locsData = new Bloodhound({ 
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace("name"), 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    remote: { 
    url: "/locations/search.json?q=%QUERY", 
    ajax: { 
     beforeSend: function(xhr, settings) { 
     // maybe the 'if' is not necessary, but just to be sure... 
     if ($(document.activeElement).typeahead != null) { 
      $(document.activeElement).addClass('loading-text'); 
     } 
     }, 
     complete: function(xhr, status) { 
     if ($(document.activeElement).typeahead != null) { 
      $(document.activeElement).removeClass('loading-text'); 
     } 
     } 
    } 
    }, 
    limit: 100 
}); 

を私はソースを見ていて、最新のバージョン(現時点ではv.0.11.1)でajaxを設定する方法がないことを発見しました。 ajaxフラグglobalをオフにする必要があるので、サーバーにajaxリクエストを送信するときにロード中のgifをトリガーしませんが、それを行う方法がわかりません。

この両方の方法を試してみてください。運がremote対象外試さないで、また

var engine = new Bloodhound({ 
      remote: { 
       url: '<s:url value="%{#typeaheadHwsnUrl}"/>'+'%QUERY%', 
       wildcard: '%QUERY%', 
       ajax: { 
        global: false, 
       } 
      }, 
      datumTokenizer: Bloodhound.tokenizers.whitespace('q'), 
      queryTokenizer: Bloodhound.tokenizers.whitespace 
     }); 

と::

var engine = new Bloodhound({ 
     remote: { 
      url: '<s:url value="%{#typeaheadHwsnUrl}"/>'+'%QUERY%', 
      wildcard: '%QUERY%', 
     }, 
     datumTokenizer: Bloodhound.tokenizers.whitespace('q'), 
     queryTokenizer: Bloodhound.tokenizers.whitespace, 
     ajax: { 
      global: false, 
     } 

私はオフにすることができますどのようにあなたは私が道でstruts2を使用しています、私はURLを指定したことに気づくでしょうこのglobalのフラグajaxの呼び出しはBloodhoundによって行われますか?

答えて

0

私の同僚は今朝同じシナリオを実行しましたが、$ .ajaxSend()をifステートメントで使用して、URLに読み込み中のGIFアニメーションが必要かどうかを判断して回避策を行っています。

ホープこれは私が似た何かをやってしまった:)

+0

を助けたが、私は今のところ、このオープンのままにして何とか誰かがこの問題に対処するために「正しい」方法を知っていればしかし、あなたの答えに感謝を参照してくださいね! – JorgeGRC