Meteor で新しいユーザーを作成するためのカスタム フォームを作成しました。
<button id="hide-show">Hide/show registration form</button>
<div class="wrapper" style="display:none">
<form>
// some inputs, each with an id.
</form>
<button id="create-account">Create account</button>
</div>
私の js では、テンプレート用に jQuery .toggle() を使用して、#hide-show ボタンがクリックされたときにフォームをラップする div を非表示/表示します。また、#create-account がクリックされたときに Accounts.createUser を呼び出します。
まず、入力をラップするフォームがある限り、Accounts.createUser を呼び出すとページ全体が再レンダリングされるようです。呼び出しが行われたときの現在の表示属性に関係なく、少なくとも元の表示が none に等しいすべての要素が非表示になります。(ブートストラップ モーダルでも試してみました。Accounts.createUser を呼び出すとモーダルが消えます。)ただし、フォーム要素を削除して入力をそのままにしておくと、この問題は解決します (ただし、ブートストラップは入力がラップされることを想定しているため、フォームの css が壊れます)。特定の動作のフォーム要素で)。
第二に、入力をラップするフォーム要素がなくても、Accounts.createUser がエラー (ユーザー名の取得など) を引き起こした場合、それらは保持されません。私は明らかに、ユーザーに登録情報の再入力を強制したくありません。preserve-inputs がインストールされていて、入力を {{#constant}} でラップしようとしましたが、うまくいきませんでした。
編集: 明確にするために、クライアントで Accounts.createUser を実行します。Meteor.call やその他の方法で呼び出すことはありません。