我通过以下方式将渲染模板添加到文档中:
Blaze.renderWithData(Template.page, Session.get(toAdd[i]), document.getElementById('pages'))
这很好用......除了有时使用自动成型。我不确定是什么触发了它发生,但我的一些自动表单(可以存在于内部Template.page
,它们通过传入的数据动态添加到该模板)显示,而其他则引发客户端错误:
Uncaught TypeError: Cannot read property 'formValues' of undefined :: autoform-inputs.js:162
markChanged :: autoform-inputs.js:169
updateTrackedFieldValue :: afFieldInput.js:72
timeout
在第 71 行的 afFieldInput.js 中有一个设置为 0。将其设置为 500 可以修复上述错误,但很麻烦并导致其他问题。
我能猜到的最好的情况是,autoform 试图在表单存在于 DOM 之前通过 id 从 DOM 中获取表单,如果我不得不猜测的话,它可能通过 Blaze 作为文档片段存在。
我可以确认AutoForm.templateInstanceForForm
正在获取正确的表单 ID,但document.getElementById(formId)
返回的是 null。
另一种可能性是 Blaze 出于某种原因未能渲染模板但没有警告我。