在HeaderComponent方法中,单击时会调用“ clickPrices”
<template>
<header>
<div class="d-flex flex-column flex-md-row align-items-center p-3 px-md-4 mb-3 bg-white border-bottom shadow-sm">
<h5 class="my-0 mr-md-auto font-weight-normal"><a href="/">Company name</a></h5>
<nav class="my-2 my-md-0 mr-md-3">
<a class="p-2 text-dark" href="#">Features</a>
<a class="p-2 text-dark">Enterprise</a>
<a class="p-2 text-dark" @click="clickPrices()">Get pricing</a>
</nav>
<a class="btn btn-outline-primary " href="#">Sign up</a>
</div>
</header>
</template>
<script>
export default {
name: "HeaderComponent",
methods: {
clickPrices() {
...
},
},
}
</script>
<style scoped>
</style>
有一个定价组件,我在其中通过“ getPricing”方法向服务器发送请求
<template>
<div class="wrap-pricing">
<div class="pricing-header px-3 py-3 pt-md-5 pb-md-4 mx-auto text-center">
<h1 class="display-4">Pricing</h1>
<p class="lead">Quickly build an effective pricing table for your potential customers with this Bootstrap example. It’s built with default Bootstrap components and utilities with little customization.</p>
</div>
<div class="container">
<div class="card-deck mb-3 text-center">
<div class="card mb-4 shadow-sm">
<div class="card-header">
<h4 class="my-0 font-weight-normal">Lorem</h4>
</div>
<div class="card-body">
<h1 class="card-title pricing-card-title">$10 <small class="text-muted">/ mo</small></h1>
<ul class="list-unstyled mt-3 mb-4">
<li>Lorem</li>
<li>Lorem</li>
<li>Lorem</li>
<li>Lorem</li>
</ul>
<button type="button" class="btn btn-lg btn-block"></button>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import router from '../routes.js';
import { axios } from 'axios';
export default {
name: "PriceComponent",
methods: {
getPricing() {
axios.get('api/pricing').then((response) => {
//some actions
router.push('prices');
});
},
},
}
</script>
<style scoped>
</style>
我应该如何处理'сlickPrices'HeaderComponent方法的结果? 还是我在等待您的方式,如何通过单击一个组件来获取另一个数据
答案 0 :(得分:0)
您可以发出一个事件,让父组件处理获取并将数据作为道具传递给子组件。
或者另一种方法是直接听事件,如下所示:
组件1:
this.$root.$emit('clickPrices', data);
组件2:
mounted() {
this.$root.$on('clickPrices', data => {
this.getPricing();
});
}
通过@alex找出答案
答案 1 :(得分:0)
由于您使用的是2个独立组件(一个不包含在另一个组件中),因此您无法传递道具
您可以做的事情-
代替获取所有点击价格,只需像这样创建一个创建的钩子,它将在创建组件时获取所有定价详细信息-
created () {
this.getPricing()
},
methods: {
getPricing() {
axios.get('api/pricing').then((response) => {
//some actions
router.push('prices');
});
},
},
使用州,当用户单击按钮时,将获取价格详细信息并将其添加到该状态中。您可以像这样在应用程序中的任何位置使用状态-
this.$store.state.prices
让我知道它是否有效,否则,我们将为您找到其他解决方案!