Я заметил это свойство сессии вары:Сессии VARS не обновляя DOM достаточно быстро в Метеоре
test.html
<input name='test' type='text' placeholder='something' value='{{testVal}}'>
test.js (template.test.helpers)
testVal: function(){
return Session.get("testVal");
}
template.test.onRendered
// Sets the initial value of the session var and the form shows "I like cats"
Session.set("testVal", "I like cats");
var displayValue = function(newInput){
Session.set("testVal", newInput);
console.log("session has been set to: ", newInput);
console.log("value of form entry using jQuery: ", $('input[name="test"]').val());
};
Когда я бегу displayValue("lalalalal")
в Chrome консоли я получаю:
"session has been set to: lalalalal"
"value of form entry using jQuery: I like cats."
Значение ввода текста делает визуально изменить реактивно к «lalalalal» после установки нового значения для переменной сеанса, но кажется, что обновление DOM из переменной сеанса недостаточно быстро - jQuery по-прежнему поднимает старое значение перед реактивным изменением, что подразумевает, что реактивные обновления DOM для сеансовых ванов являются асинхронными.
Таким образом, если вы используете реактивные переменные для автоматического обновления полей формы, и вы используете jQuery для захвата значений формы, вам нужно каким-то образом подождать, пока DOM будет полностью обновлен, прежде чем вы сможете использовать jQuery ,
Кто-нибудь знает какой-либо способ сделать это, в идеале в контексте этого примера?
Я фактически использую пакет Autoform для создания форм. Autoform может использовать реактивные переменные для установки начального значения полей формы. Я использую jQuery для захвата полей формы, и я получаю много действительно раздражающих проблем, где значения, которые я захватил с помощью jQuery, не синхронизированы с любыми новыми значениями полей, которые заполняются из реактивности. – fuzzybabybunny