簡體   English   中英

我們如何使用visualsearch.js的輸出?

[英]How do we use the output of visualsearch.js?

我有興趣為我的網站使用visualsearch.js控件,但是,通過閱讀文檔,我仍然不清楚如何有效地獲取輸出搜索集合數據。 基於該示例,輸出字符串通過搜索集合的序列化來構造。 但是,我想知道是否有一種方法可以以更像數組的方式訪問搜索集合(以便可以使用for / in循環),而不必解析單個序列化字符串。 最終,我需要從搜索集合數據構造SQL查詢。

如果有更有效或適當的方式來訪問搜索集合數據,請告訴我!

謝謝!

據我所知,有兩種方法可以從視覺搜索中獲取數據,它也可以在使用#4的文檔中直接解釋

  1. 就像你說的那樣,搜索的字符串化版本。

     visualSearch.searchBox.value(); // returns: 'country: "United States" state: "New York" account: 5-samuel title: "Pentagon Papers"' 
  2. 或者刻面的對象循環

     visualSearch.searchQuery.facets(); // returns: [{"country":"United States"},{"state":"New York"},{"account":"5-samuel"},{"title":"Pentagon Papers"}] 

    正如您所看到的,此選項為您提供了一個數組,每個被過濾的方面,以及每個資產輸入的值。

嗯...好吧,答案不是那么簡單。 我建議你通過骨干結構進行一些練習,只需對todo-list應用程序進行一些修改。 這是一個很好的起點。 因此,您熟悉了一些用於集合的精彩backbone.js方法

基本思想如下:使用visualsearch,您可以獲得“facet”列表,也就是說一組鍵/值對象。

 var myFacets = visualSearch.searchQuery.facets();
 //my facets is then something like [{"field1":"value1-a"},{"field2":"value2-c"}]

在此之后,您可以使用myFacets元素,使用從_underscore lib中獲取的WONDERFUL filter方法迭代過濾您的集合。

怎么做? 您可以在下划線lib中使用_.each方法

    _.each(myFacets,function(facet){
                myCollection=myCollection.filter(function(item){
                    return item.get(facet.get('category')) == facet.get('value');
                    });
                });
            }

在這里使用backbone.js的filter方法,它只根據你的子句返回值為true。 因此,您為每個方面過濾一次集合。 這就像告訴javascript:“只返回與此facet(value)匹配的集合元素”,然后對所有不同的方面進行迭代迭代。

希望這可以幫助。

啊..最后一件事,只是為了搞亂想法:-):Visualsearch建立在backbone.js上,而searchQuery對象只不過是一個骨干集合,所以你可以使用基本骨干集合的方法和屬性。 如果不清楚,請再次閱讀此行,因為這可能是未來實施的關鍵點! :-)

我建議你看一下lib / js / models文件夾中的search_jquery.js文件。 這很有意思......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM