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その afFieldInput.js の 71 行目に 0 が設定されています。これを 500 に増やすと上記のエラーは修正されますが、ハッキーであり、他の問題が発生します。

私が推測できる最善の方法は、autoform が DOM に存在する前に id で DOM からフォームを取得しようとしているということです。推測する必要がある場合は、Blaze を介してドキュメントフラグメントとして存在する可能性があります。

AutoForm.templateInstanceForForm正しいフォーム ID を取得していることは確認できますが、 document.getElementById(formId)null が返されています。

もう 1 つの可能性は、何らかの理由で Blaze がテンプレートのレンダリングに失敗しているが、警告はしていないということです。

4

1 に答える 1

0

私はかなり離れていました。

スキーマを変更しましたが、新しいスキーマに対して不適切なデータを含むドキュメントを開こうとしていました。誰かが同じエラーに遭遇した場合に備えて、この回答を投稿します。

また、オブジェクトや関数を、autoform が想定していないテンプレートまでずっと渡さないでください。それらにアクセスすることはできますが、ヘルパーで関数としてattr宣言することでオブジェクトから削除し、テンプレートに送信する必要のないオブジェクトをattr返します。this.attr

于 2015-03-18T07:08:41.603 に答える