【发布时间】:2018-09-11 22:10:00
【问题描述】:
我有一个模态框,我希望在单击按钮时更新内容。这个按钮不在组件中,我需要它来更新一个 item slug,它将用于从 API 获取内容。
我是 Vuejs 新手。
这是我的 app.js:
Vue.component('pop-modal', require('./components/PopModal.vue'));
const app = new Vue({
el: '#app',
data: {
popSlug: 0
},
methods: {
updatePop: function(popSlug) {
this.popSlug = popSlug
console.log(this.popSlug)
}
}
});
这是我的组件:
<template>
<div class="modal fade" id="popModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<h1>{{ pop.name }}</h1>
<p>test: {{ this.$parent.popSlug }}</p>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
pop: {},
}
},
watch: {
popSlug(newPopslug) {
this.popSlug = newPopslug
this.fetchData()
console.log('new popslug value!')
}
},
mounted() {
console.log('Component pop-modal mounted.')
},
methods: {
fetchData() {
axios.get(route('api.pops.show'), this.popSlug)
.then(response => {
// JSON responses are automatically parsed.
this.pop = response.data
})
.catch(e => {
this.errors.push(e)
})
console.log('fetchData')
}
}
}
</script>
我知道我做错了,但我不知道如何做对。 watch 方法永远不会被触发,因为 popSlug 不是数据属性。 我可以通过以下方式获得 popSlug 值:
{{ this.$parent.popSlug }}
但我认为这样做是错误的。
提前感谢您的帮助。
【问题讨论】:
标签: laravel vue.js vuejs2 vue-component