привязка значения вложенного объекта json к полю формы - PullRequest
5 голосов
/ 14 мая 2010

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

Пока у меня есть код, который генерирует вложенные таблицы для представления объекта json. Для каждого значения я отображаю поле формы. Я хотел бы привязать поле формы к соответствующему вложенному значению json. Если бы я мог сохранить ссылку на значение json, я бы создал массив ссылок на каждое значение в дереве объектов json. Я не нашел способ сделать это с помощью JavaScript.

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

Есть идеи?

// the json in files nests only a few levels. Here is the format of a simple case,
{
 "researcherid_id":{
  "id_key":"researcherid_id",
  "description":"Use to retrieve bibliometric data",
  "url_template" :[
    {
      "name": "Author Detail",
      "url": "http://www.researcherid.com/rid/${key}"
    }
  ]         
 }
}

$.get('file.json',make_json_form);

function make_json_form(response) {

   dataset = $.secureEvalJSON(response);
   // iterate through the object and generate form field for string values.

}

// Then after the form is edited I want to display the raw updated json (then I want to save it but that is for another thread)

// now I iterate through the form and construct the json object
// I would rather have the dataset object var updated on focus out after each edit.

function show_json(form_id){
 var r = {};
 var el = document.getElementById(form_id);
 table_to_json(r,el,null);
 $('body').html(formattedJSON(r));
}

Ответы [ 3 ]

0 голосов
/ 20 ноября 2010

Решение пришло. JQuery теперь имеет плагины для привязки данных и шаблоны.

http://www.borismoore.com/2010/09/introducing-jquery-templates-1-first.html http://api.jquery.com/jQuery.template/ http://api.jquery.com/category/plugins/data-link/

0 голосов
/ 28 апреля 2011

Существует еще один простой шаблонизатор, который загружает данные JSON непосредственно в форму. Смотрите плагин http://plugins.jquery.com/project/loadJSON. Он работает так же, как тот, который Джек поместил здесь, но использует простой HTML для шаблона.

Инструкции по его использованию можно найти на http://code.google.com/p/jquery-load-json/wiki/WorkingWithFormElements, а живой пример - на http://jquery -load-json.googlecode.com / svn / trunk / edit.html? ID = 17 .

0 голосов
/ 25 мая 2010

Намного проще было бы принять отправку формы и вывести данные в формате JSON. Таким образом, нет необходимости связывать переменные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...