2013-06-23 4 views
0

У меня есть маркер ввода JQuery реализован для целей мечения, где пользователь может выполнять поиск тега или создать новый благодаря Railscasts ep#382 & ep#258. Данные поступают из URL-адреса tags.json, который является указательным действием контроллера тэгов. Данные из tags.json выглядит так:Анализировать JSON массив хэшей в JQuery tokenInput

[ 
    { 
    "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" 
    } 
] 

Мои теги имеют имя, а также объяснения, так что я хотел бы включить их в списке результатов, таких как Токен и результаты форматирования демо здесь http://loopj.com/jquery-tokeninput/demo.html#formatting.

Код ниже (количество записей опущено для краткости) из jQuery tokenInput Токен и форматирование результатов demo.

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

tags.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') 
    }); 
}); 
+1

Вы спрашиваете, как загрузить этот json из рельсов в javascript? Пример показывает, что вы передадите весь массив в ваш вызов 'tokenInput'. –

+0

oh ok, его гораздо проще, чем я думал, вы можете получить доступ к item.explanation из входных токенов ('tags.json') PUt, что в ответ @joeshmo и плохо с радостью принимаем. – dodgerogers747

ответ

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_profile_2_normal.png" 
     }, 
     { 
      "first_name": "Adam", 
      "last_name": "Johnson", 
      "email": "[email protected]", 
      "url": "https://si0.twimg.com/sticky/default_profile_images/default_profile_2_normal.png" 
     }, 
     ... 

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

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