Я получаю объект javascript через ajax. Мне нужно прикрепить этот объект к div, чтобы его можно было восстановить позже, например, при событии клика.
Если бы вместо объекта у меня была переменная, я бы нажал ее в теги html, как это:
'<div variable="'+value+'"></div>';
И я бы восстановил его значение следующим образом:
var value= $(this).attr('variable')
Не могли бы вы предложить мне хороший подход, чтобы сделать это с объектами?
Большое спасибо!
Если вы используете JQuery, вы можете использовать функцию хранения данных
//To store value or obj:
$("#myDivId").data("myKey", valueVar);
//Later to load:
var fetchValue = $("#myDivId").data("myKey");
Самый простой способ - сделать это:
<div id="myDiv">...</div>
В javascript
var myDiv = document.getElmentById('myDiv');
myDiv._variable = variable;
Вы можете восстановить это позже, если хотите, просто используя одну и ту же переменную myDiv или, опять же, с document.getElementById()
или любым другим методом DOM, который возвращает этот элемент.
var variable = myDiv._variable;
Недостатком этого является то, что вы не можете указать на сервере или из разметки, какой объект вы хотите привязать к элементу.
myDiv.objectA = variable;
_variable
в примере, потому что я не знаю, что именно @ marc-vilalta хочет сохранить.
Использование механизма шаблонов было бы лучшим подходом, разделив логику с представлением, и таким образом вы сможете анализировать полные свойства объекта в html.
в этом примере я использую механизм шаблонов jQuery & UnderscoreJs.
часть javascript:
$(document).ready(function(){
var user = { name:"Ofer", age:"29" }
var markup = _.template($("#userTemplate").html(), user);
$('#userContainer').html(markup);
});
html часть (входит в тело)
<div id="userContainer">
</div>
<script id="userTemplate" type="text/template">
<fieldset>
<legend>User</legend>
Name: <%= name %><br>
Age: <%= age %> <br>
</fieldset>
</script>
Функция _.template($ ("# userTemplate"). Html(), пользователь); может быть вызвана из полной функции обратного вызова ajax, передавая данные из результатов в функцию (пользовательская переменная будет данными)