2015-02-07 3 views
1

Я пытаюсь реализовать Remote Source в Selectize.Выделить, не показывать результаты поиска

Доступ к данным из api. Формат выглядит следующим образом:

concept_id,name 
228,Pelecypoda 
286,Pelecypoda 

Когда я пытаюсь объединить элемент в рендеринг, он не успокаивается. Но когда я утешаю успех, данные утешаются.

$('#search_text').selectize({ 
    theme: 'name', 
    valueField: 'url', 
    labelField: 'name', 
    searchField: 'name', 
    options: [], 
    create: false, 
    render: { 
     option: function(item, escape) { 
      console.log(item); 
      return '<div>' + 
       '<span class="title">' + 
        '<span class="by">' + escape(item.name) + '</span>' + 
       '</span>' + 
       '<span class="description">' + escape(item.concept_id) + '</span>' + 
      '</div>'; 
     } 
    }, 
    score: function(search) { 
     var score = this.getScoreFunction(search); 
     return function(item) { 
      return score(item) * (1 + Math.min(item.watchers/100, 1)); 
     }; 
    }, 
    load: function(query, callback) { 
     if (!query.length) return callback(); 
     $.ajax({ 
      url: "http://192.241.245.176:4567/api1", 
      dataType: 'text', 
      type: "GET", 
      data: { 
       q: query, 
       page_limit: 10 
      }, 
      error: function() { 
       callback(); 
      }, 
      success: function(res) { 
       var result = {}; 
       result.name = d3.csv.parse(res); 
       console.log(result); 
       callback(result.name); 
      } 
     }); 
    } 
}); 

Может кто-нибудь скажет мне, где я буду не так?

+0

Постарайся утешая 'result.name' – Owlvark

+0

Да я попробовал, что и он утешал @Owlvark – devanshi28

ответ

0

Я считаю, что существует стандартный ключ, но документация не охватывает его очень тщательно. Он упоминается там один раз, но не обсуждается дальше.

Вы должны вернуть свой результат с сервера со свойствами имени и значения:

имя => namedata

значение => valuedata

Cliffnote: $ пунктов [$ я] [ 'имя'] [ 'ID']

Cliffnote: $ пунктов [$ я] [ 'значение'] [$ ключ]

в моем случае построение моего результата выглядит как этот PHP код.

$group['location'] = range(0,5); 
             //'street', 
             //'city', 
             //'county', 
             //'state', 
             //'country', 
             //'country2', 

    $group['property'] = range(0,4); 
             //'title', 
             //'property_sub_type', 
             //'subdivision_name', 
             //'sub_cat', 
             //'interior_features', 

    $group['school'] = range(0,2); 
             //'junior_high_School', 
             //'middle_school', 
             //'high_school', 

    $group['mls']  = range(0,1); 
             //'mls_area' 
             //'mls_id#' 
    $items = array(); 
    for ($i = 0; $i < count($res); $i++) 
    { 
     $items[$i]['name']['id'] = array_shift($res[$i]); 
     $offset   = 0; 
     foreach ($group as $key => $val) 
     { 
      $items[$i]['value'][$key] = array_filter(array_slice($res[$i], $offset, count($group[$key]))); 
      $offset += count($group[$key]); 
     } 
    } 

в результате этой структуры данных

Array 
(
    [0] => Array 
     (
      [name] => Array 
       (
        [id] => 119 
       ) 

      [value] => Array 
       (
        [location] => Array 
         (
          [street] => 25700 Cliff Cir 
          [city] => Spicewood 
          [county] => Travis 
          [state] => Texas 
         ) 

        [property] => Array 
         (
          [property_sub_type] => Single Lot 
          [subdivision_name] => Lakecliff On Lake Travis Sec 01 
         ) 

        [school] => Array 
         (
          [junior_high_School] => N/A 
          [middle_school] => Marble Falls 
          [high_school] => N/A 
         ) 

        [mls] => Array 
         (
          [mls_area] => 12 
          [mls_id#] => 4434048 
         ) 

       ) 

     ) 
Смежные вопросы