2015-03-18 3 views
0

Я добавляю обработанный шаблон к документу с помощью:Метеор AutoForm не ждать элемента существовать в DOM

Blaze.renderWithData(Template.page, Session.get(toAdd[i]), document.getElementById('pages')) 

Это прекрасно работает ... кроме того, иногда с AutoForm. Я не уверен, что запуск, чтобы это произошло, но некоторые из моих autoforms (которые могут существовать внутри Template.page, они добавляют к этому шаблону динамически с помощью данных, передаваемых в) шоу, в то время как другие бросают ошибку клиента:

Uncaught TypeError: Cannot read property 'formValues' of undefined :: autoform-inputs.js:162 
markChanged :: autoform-inputs.js:169 
updateTrackedFieldValue :: afFieldInput.js:72 

Существует timeout, установленный в 0 в этом afFieldInput.js в строке 71. Увеличение этого числа до 500 исправляет ошибку выше, но является взломанной и вызывает другие проблемы.

Лучшее, что я могу предположить, autoform пытается получить форму из DOM по id до того, как она существует в DOM, возможно, она существует как фрагмент документа через Blaze, если бы мне пришлось угадать.

Я могу подтвердить, что AutoForm.templateInstanceForForm получает правильный идентификатор формы, но document.getElementById(formId) возвращает null.

Другая возможность заключается в том, что Blaze по какой-то причине не отображает шаблон, но не предупреждает меня.

ответ

0

Я был ПУТЬ выключен.

Я изменил схему, но пытался открыть документ с неправильными данными для новой схемы. Собираюсь опубликовать этот ответ, если кто-то встретит ту же ошибку.

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