0

特定のオブジェクトの属性を検索するために使用できるVisualSearch.jsクエリボックスを実装しようとしています。VisualSearch.jsは、カテゴリを持つことができるファセットを提供しますが、モデル名のファセットをロードする方法を知っています(例:「user」)。クリック/選択すると、その前に属性のリストを含む2番目のサブファセットをロードしますユーザーに、JSON呼び出しを介してロードされる値を最終的にクリックする機会を与えます。この種の機能への参照を検索しましたが見つかりませんが、誤った用語「サブファセット」を使用している可能性があります。

これが私が遊んでいる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: 'john.smith@example.com'},
                           {
                        label: 'jane.doe@example.com'}
                        ]);
                        break;
                }
            }
        }
    } });

どうもありがとう。

4

2 に答える 2

0

ソースコードを読んだ後、この機能を作成するには、VisualSearch.jsをフォークして、そのクラスのいくつかを編集する必要があることがわかります。

http://documentcloud.github.com/visualsearch/docs/search_facet.html

于 2012-11-14T13:28:13.450 に答える
0

質問に答えるのが非常に遅いかもしれませんが、それは誰かを助けるかもしれません。ビジュアル検索ライブラリ自体を変更する必要があるという@andrewsavilに同意します。

setupAutocomplete関数内のsearch_facet.jsファイルに次のコードを追加する必要があります。-

// 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));
  };
于 2014-12-24T13:16:59.067 に答える