マイコード:Parentプロパティは、子にバインドされていません(エンバー2.8)
signup.emblem:
= validating-form onsubmit=(action 'signUp')
= input-field value=username
span {{usernameError}}
検証し-form.js:
submit(event) {
console.log(this.get('username') //undefined
this.sendAction('onsubmit')
}
signup.js:
actions: {
signUp() {
console.log(this.get('username')) // value from input
}
}
ご覧のとおり、基本的な考え方は入力値ですvalidating-formコンポーネントで検証され、すべてがうまくいけば、何らかのコントローラアクションを呼び出すか、いくつかのプロパティを設定します。
問題は明らかに、このフォームコンポーネントは、その子コンポーネント(input-field)がコントローラであるにもかかわらず、コントローラのプロパティにバインドされていないということです。ここで何が間違っているのか教えていただけますか?
明示的にバインドする必要がある場合は、複数のプロパティを同時に使用する方法がありますか?
私の入力フィールドコンポーネントでは、すでに双方向バインドを可能にする入力ヘルパーを使用しています。 'login'コントローラでうまく動作し、' validating-form'で壊れます(コンポーネントはそれ自身の使い方でオーバーライドします)、 'input-field'で再びうまく動作します。 – Senthe
さて、私は何が起こっているのだろうと思うのは、変数がコンポーネントとコントローラの間で混在するので、変数は両方の場所に存在しないということです。フォームがコンポーネント内にあり、コントローラ内で検証関数を呼び出す場合は、検証関数をコンポーネントに渡す必要があります。 – JonRed
私はコントローラーもコンポーネントだと思っていました。しかし、私は間違っていました。 – Senthe