ホームページ > ウェブフロントエンド > フロントエンドQ&A > Vue は、親ウィンドウが閉じているときに操作を実行するために子ノードをどのように実装しますか?

Vue は、親ウィンドウが閉じているときに操作を実行するために子ノードをどのように実装しますか?

PHPz
リリース: 2023-04-12 10:08:10
オリジナル
993 人が閲覧しました

Vue 子ノードの親ウィンドウが閉じている

Vue アプリケーションでは、親ウィンドウが閉じているときにコンポーネント (子ノード) が何らかの操作を実行する必要がある状況によく遭遇します。

たとえば、モーダル ボックスでは、モーダル ボックスの閉じるボタンをクリックすると、フォームが送信され、同時にモーダル ボックス コンポーネントが破棄されることを望みます。

それでは、Vue アプリケーションで、親ウィンドウが閉じているときにいくつかの操作を実行するために子ノードを実装するにはどうすればよいでしょうか?

方法 1: $emit イベントを使用する

Vue コンポーネントには $emit メソッドが用意されており、これを使用してカスタム イベントをトリガーし、データを親コンポーネントに渡すことができます。

子ノードでは、親ウィンドウの終了イベントをリッスンして、カスタム イベントをトリガーできます。

methods: {
  onClose() {
    this.$emit('close');
  }
}
ログイン後にコピー

親ウィンドウでは、子ノードのラベル「Listen」にバインドできます。イベントにフォームを送信し、閉じるときにモーダル ボックス コンポーネントを破棄します。

<modal-dialog @close="handleSubmit">
  <!-- 模态框内容 -->
</modal-dialog>
ログイン後にコピー
methods: {
  handleSubmit() {
    // 提交表单
    // ...

    // 销毁模态框组件
    this.$refs.modalDialog.$destroy();
  }
}
ログイン後にコピー

方法 2: $parent 属性を使用します

$emit イベントの使用に加えて、次のメソッドも使用できます。 $parent 属性を使用して親コンポーネントのインスタンスを取得し、親コンポーネントのメソッドを呼び出します。

子ノードでは、$parent 属性を使用して親コンポーネントのインスタンスを取得し、親コンポーネントの終了メソッドを呼び出すことができます。

methods: {
  onClose() {
    this.$parent.close();
  }
}
ログイン後にコピー

親ウィンドウでは、モーダルにする必要があります。ボックス コンポーネントのインスタンスで close メソッドを定義し、子ノードでメソッドを呼び出します。

<modal-dialog ref="modalDialog">
  <!-- 模态框内容 -->
</modal-dialog>
ログイン後にコピー
mounted() {
  this.$refs.modalDialog.close = () => {
    // 提交表单
    // ...

    // 关闭模态框
    this.$refs.modalDialog.hide();
  }
}
ログイン後にコピー

summary

Vue アプリケーションでは、次の場合に子ノードでいくつかの操作を実行する必要があります。親ウィンドウが閉じている場合は、$emit イベントまたは $parent 属性を使用できます。

$emit イベントを使用すると、子ノード コンポーネントの柔軟性が高まり、別の親コンポーネントで再利用できますが、親コンポーネントでリッスン イベントを手動で記述する必要があります。

$parent 属性を使用すると、子ノード コンポーネントをより簡潔にできます。親コンポーネントのメソッドを呼び出すだけで済みますが、親コンポーネントで終了メソッドを手動で定義し、それをコンポーネントに渡す必要があります。子ノード。

以上がVue は、親ウィンドウが閉じているときに操作を実行するために子ノードをどのように実装しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート