私はフォームであるvuejsコンポーネントを持っています。それは1つのフィールド "電子メール"を持っています。 "email"という名前の小道具として親からコンポーネントに与えられた場合の "email"のデフォルト値。ユーザーがフォームを送信すると、親が「電子メール」の更新された値を取得できるように、イベントを起動する必要があります。vuejsでajaxと連携するフォームコンポーネントを取得する
だから、これは
<parent>
<child :email="email" />
</parent>
のように見えますが、今の問題は、私の子供のオブジェクトであるように見えます:
{
props: ['email'],
data() {return {d_email: this.email}
}
問題は、私は常に、フォームフィールドにNULL値を見ています、です。私の入力フォームタグはこのようになりますので、これは起こっているようだ:私は値=「メール」を使用しない場合
<input type="text" v-model="d_email" :value="email" />
、その後、子コンポーネントが更新されないとき、親で電子メールの値が変化これは必要です。
しかし、フォームの送信時に入力変更を親に返す必要があるため、入力値をどこかに格納する必要があります。私はそのためにd_emailを使用しています。
ただし、子が最初にレンダリングされるとき、propメールはnullであるため、d_emailはnullに初期化されます。つまり、vモデルのために、inoutフィールドは常にnullを示します。
ここで推奨されるアプローチは何ですか?
updateemail
は、イベントの名前であると
setemail
が上の方法である
<child :email="email" v-on:updateemail="setemail"></child>
:親があなたのような子コンポーネントへのリンクを追加する必要が拾うだろうというイベントを発射する
なぜか分かりませんが、計算されたプロパティが動作するときにウォッチでドキュメントがダウンしています:「他のデータに基づいて変更する必要のあるデータがあると、ウォッチを酷使することが魅力的です。 AngularJSのバックグラウンドから来ていますが、必須のウォッチコールバックではなく、計算されたプロパティを使用する方が良いことがよくあります。 " –
@ MarkM通常、私は同意するかもしれません。しかし、この場合、 'v-model'のソースであるローカル' d_email'を持っていますので、 'get'があなたの答えに示唆したものであるget/set計算が最低限必要です。 $ emit。しかし、彼は 'フォーム'が提出するときに親を更新することを記述しています。つまり、(私にとっては)必ずしも*即座に値を出すとは限りません。その場合、私は計算された時計をお勧めします。 – Bert