2017-02-05 6 views
0

결과 경우에만 표시Algolia 자동 완성은 - X보다가 내가보다가있는 경우만 드롭 다운의 바닥 글에서 몇 가지 추가 텍스트를 표시하고 싶습니다 Algolia의 autocomplete.js (jQuery를 버전)</p> <p>을 사용하고

예를 들어 "더 자세히/전체 결과보기"중 두 데이터 소스 중 하나에 대한 5 개의 결과. 나는 '바깥 쪽'꼬리말 (즉, 하나의 소스에 한정된 꼬리말이 아님)에 이것을 표시하고자합니다.

다른 모든 조건에서 (예 : 데이터 소스에 결과가 없거나 두 소스에서 5 미만인 경우),이 텍스트를 숨기고 싶습니다.

어떻게하면됩니까? 불행하게도

var index_classes = client.initIndex('classes'); 
    var index_stories = client.initIndex('articles'); 

$('input[name="search_text"]').autocomplete(
        { autoselect:true, debug:true, 
         templates: { 
          footer: '<span id="see-all-sr"><hr><a href="#" style="size:16px;padding-left:12px">See all results</a><br>&nbsp<span>' 
         } 
        }, [ 
        { 
         source: $.fn.autocomplete.sources.hits(index_classes, { hitsPerPage: 5 }), 
         displayKey: 'name', 
         name: 'class', 
         templates: { 
          header: '<div class="aa-suggestions-category">Classes</div>', 
          suggestion: function(suggestion) { 
           return '<img src="/images/class/' + suggestion.id + '_100.jpg">' + '<div><span>' + 
            suggestion._highlightResult.name.value + '</span><span>' 
            + suggestion._highlightResult.teacher_name.value + '</span>'; 
          }, 
          empty: '<div class="aa-empty">No results. See <a href="/classes">all classes</a></div>', 
         } 
        }, 
         { 
          source: $.fn.autocomplete.sources.hits(index_stories, { hitsPerPage: 5 }), 
          displayKey: 'title', 
          name: 'story', 
          templates: { 
           header: '<div class="aa-suggestions-category">Stories</div>', 
           suggestion: function(suggestion) { 
            return '<img src="/images/article/' + suggestion.id + '_100.jpg">' + '<div><span>' + 
             suggestion._highlightResult.title.value + '</span><span>' + 
             suggestion._highlightResult.author_name.value + '</span></div>'; 
           }, 
           empty: '<div class="aa-empty">No results. See <a href="/stories">all stories</a></div>', 
          } 
         } 

       ]).on('autocomplete:empty', function() { 
        document.getElementById('see-all-sr').style.display = "none"; 
       }); 

답변

0

아래에 내 현재 코드는 autocomplete.js의 데이터 세트/소스 그러므로 같은 바닥 글 조건이 정말 실행 가능하지 ... 독립적이고 비동기 :/

이 더 깊은 재 작성을 요구한다.

+0

감사합니다. 병렬 쿼리를 사용하여 히트 수를 얻으려면 아래를 참조하십시오. 하지만 'c'는 정의되지 않았습니다. 도울 수 있니? var client = algoliasearch (...); var in = client.initIndex ('c'); $ ('# 검색'). 변경 (함수) { var st = $ (this) .val(); in.search (st, function searchDone (err, content) { if (err) { C = 0; } 다른 { 의 C =의 content.nbHits; \t \t \t \t} }); 경고 (C). – user6122500

+0

당신은 표시 등 코드를 사용할 수 없습니다 콜백이 비동기 적으로 호출 될 것을 기억/값을 경고하십시오. -> 자바 스크립트를 더 잘 준수해야합니다. – redox