0

我通过以下方式将渲染模板添加到文档中:

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 出于某种原因未能渲染模板但没有警告我。

4

1 回答 1

0

我已经走了。

我已经更改了架构,但试图为新架构打开一个包含不正确数据的文档。如果有人遇到相同的错误,将发布此答案。

此外,显然,不要将对象或函数一直传递到 autoform 不期望的模板。attr您仍然可以访问它们,但通过在帮助程序中声明attr为函数将它们从对象中删除,返回this.attr不需要发送到模板的任何对象。

于 2015-03-18T07:08:41.603 回答