2012-11-12 53 views
0

我想實現一個VisualSearch.js查詢框,可以用來搜索特定對象的屬性。 VisualSearch.js提供了Facets,它們可以有類別,但是沒有人知道我可以爲模型名稱.eg'user'加載構面的方式,然後在點擊/選擇之後加載第二個具有屬性列表的子構面讓用戶有機會最終點擊將通過JSON調用加載的值。我已經搜索並找不到任何對此類功能的引用,但我可能只是使用了不正確的術語「Sub Facet」。VisualSearch.js Sub Facets

這是我一直在玩的JSFiddle。 http://jsfiddle.net/Savvy84/HRuAP/13/

var visualSearch = VS.init({ 
    container: $('#visual_search'), 
    query: '', 
    callbacks: { 
     search: function(query, searchCollection) {}, 
     facetMatches: function(callback) { 
      callback([ 
       { 
       value: 'user.email', 
       label: 'users.email', 
       category: 'Users'}, 
       { 
       value: 'job.name', 
       label: 'job.name', 
       category: 'Jobs'}, 
       { 
       value: 'job.startDate', 
       label: 'job.startDate', 
       category: 'Jobs'} 
      ]); 
     }, 
     valueMatches: function(facet, searchTerm, callback) { 
      if (searchTerm.length > 0) { 
       //pass the facet to the search and let the server deal with it. 
       switch (facet) { 
       case 'user.email': 
        callback([ 
         { 
         label: '[email protected]'}, 
          { 
         label: '[email protected]'} 
         ]); 
         break; 
       } 
      } 
     } 
    } }); 

很多謝謝。

回答

0

可能是我非常晚,現在來回答這個問題,但是它可以幫助一些之一。 我同意@andrewsavil你需要修改視覺搜索庫本身。

您需要添加以下代碼到search_facet.js的setupAutocomplete函數內部文件: -

// Renders the results grouped by the categories they belong to. 
this.box.data('uiAutocomplete')._renderMenu = function(ul, items) { 
    var category = ''; 
    _.each(items, _.bind(function(item, i) { 
     if (item.category && item.category != category) { 
     ul.append('<li class="ui-autocomplete-category">'+item.category+'</li>'); 
     category = item.category; 
     } 

     if(this._renderItemData) { 
     this._renderItemData(ul, item); 
     } else { 
     this._renderItem(ul, item); 
     } 

    }, this)); 
    };