2016-08-05 2 views
1

Ich habe versucht, Suchergebnisse nach Kategorie mit jquery semantischen UI-Suchmodul mit lokalen Inhalten anzuzeigen. aber es scheint nicht zu funktionieren. Es zeigt keine Ergebnisse. Unten ist mein Code:Wie verwende ich den Kategorietyp in jQuery Semantic UI Search mit lokalem Content?

var content = { 
    "results": { 
    "category1": { 
     "name": "Category 1", 
     "results": [ 
     { 
      "title": "Result Title", 
      "url": "/optional/url/on/click", 
      "image": "optional-image.jpg", 
      "price": "Optional Price", 
      "description": "Optional Description" 
     }, 
     { 
      "title": "Result Title", 
      "url": "/optional/url/on/click", 
      "image": "optional-image.jpg", 
      "price": "Optional Price", 
      "description": "Optional Description" 
     } 
     ] 
    }, 
    "category2": { 
     "name": "Category 2", 
     "results": [ 
     { 
      "title": "Result Title", 
      "url": "/optional/url/on/click", 
      "image": "optional-image.jpg", 
      "price": "Optional Price", 
      "description": "Optional Description" 
     } 
     ] 
    } 
    } 
}; 
$(document).ready(function(){ 
    $('.ui.search').search({ 
         source: content, 
         type:'category', 
         maxResults:4, 
         fields: { 
            categories  : 'results',  
            categoryName : 'name',  
            categoryResults : 'results',  
            description  : 'description', 
            image   : 'image',  
            title   : 'title' 
           } 
    }); 
}); 

Kann mir bitte jemand helfen.

Grüßen, Salman

+0

nach einer Antwort auf diese Suche Frage auch. Vielleicht unterstützt Semantic keine lokale Kategoriesuche? – megamaiku

Antwort

0

Die Funktion zur Zeit noch nicht verfügbar ist: https://github.com/Semantic-Org/Semantic-UI/issues/1917

Dies ist eine Abhilfe:

import _ from 'lodash' 
 

 
$('.ui.search').search({ 
 
    type: 'category', 
 
    apiSettings: { 
 
    response: (settings) => { 
 
     let query = settings.urlData.query 
 
     let filteredContent = _.cloneDeep(content) 
 

 
     _.forOwn(filteredContent.results, (value, key) => { 
 
     _.remove(filteredContent.results[key].results, (result) => { 
 
      return !result.title.match(query) 
 
     }) 
 
     }) 
 

 
     return filteredContent 
 
    } 
 
    } 
 
})