Разобрать массив хэшей JSON в jQuery tokenInput

У меня есть ввод токена jQuery, реализованный для целей тегирования, когда пользователь может искать тег или создавать новый благодаря railscasts ep#382 и ep#258. Данные поступают с URL-адреса tags.json, который является индексным действием контроллера тегов. Данные из tags.json выглядят так:

[
  {
    "created_at":"2013-06-21T16:30:19Z",
    "explanation":"hitting the hosel of the club",
    "id":8,
    "name":"shank",
    "updated_at":"2013-06-21T16:30:19Z",
    "updated_by":"andy"
  },
  {
    "created_at":"2013-06-22T17:40:37Z",
    "explanation":"hitting the ground before the ball",
    "id":12,
    "name":"chunk",
    "updated_at":"2013-06-22T17:40:37Z",
    "updated_by":"andy"
  }
]

У моих тегов есть имя, а также объяснение, поэтому я хотел бы включить их в список результатов, например демонстрацию Token and Results Formatting здесь http://loopj.com/jquery.

Приведенный ниже код (количество записей опущено для краткости) взят из демонстрации jQuery tokenInput Token and Results Formatting.

Вместо того, чтобы вручную вводить здесь «name»: «Shank», а также другие пропущенные записи, как я могу извлечь имя и объяснение из хэша tags.json и использовать их в том же виде, что и строка форматирования результатов, например item.name и item.explanation?

теги.js

jQuery(function() {
var question = $('#question_tag_tokens')
  return question.tokenInput([{
       "name": "Shank",
       "explanation": "hitting the hosel of the club"
   }
 ], {
    propertyToSearch: ["name"],
    resultsFormatter: function(item){ return "<li>" + "<div class='tag' style='display:inline;color:#fff;'>" + item.name + "</div>" + " " + item.explanation + "</li>" },
    prePopulate: question.data('preload')
  });
});

person dodgerogers747    schedule 23.06.2013    source источник
comment
Вы спрашиваете, как загрузить этот json из рельсов в свой javascript? Пример показывает, что вы должны передать весь массив в свой вызов tokenInput.   -  person Joe Flynn    schedule 23.06.2013
comment
о, хорошо, это намного проще, чем я думал, вы можете получить доступ к item.explanation из вводов токенов ('tags.json'). Укажите это в ответе @joeshmo, и я с радостью приму.   -  person dodgerogers747    schedule 23.06.2013


Ответы (1)


Источник для примера, на который вы ссылались, выглядит следующим образом:

 $(document).ready(function() {
     $("#demo-input-local-custom-formatters").tokenInput(
         [{
             "first_name": "Arthur",
             "last_name": "Godfrey",
             "email": "[email protected]",
             "url": "https://si0.twimg.com/sticky/default_profile_images/default_profiletokenInputnormal.png"
         },
         {
             "first_name": "Adam",
             "last_name": "Johnson",
             "email": "[email protected]",
             "url": "https://si0.twimg.com/sticky/default_profile_images/default_profiletokenInputnormal.png"
         },
         ...

         ], 
         {
             propertyToSearch: "first_name",
             resultsFormatter: function(item){ ... },
             tokenFormatter: function(item) { ... }
         });
});

tokenInput кажется, принимает массив объектов. Как только вы загружаете json с помощью ajax, вы просто передаете его и указываете, в каком поле искать, и некоторые обратные вызовы для форматирования результатов.

person Joe Flynn    schedule 24.06.2013