【发布时间】:2018-07-06 23:22:09
【问题描述】:
我创建了一个基本的 CLI 结构环境。我有一个显示消息/警报的组件,即:登录失败等......
由于这个组件将在整个应用程序中重复使用,我想将它导入到根 App.vue 文件并在那里进行处理。它正在工作……有点。
它可以很好地显示消息/警报,但我希望它在设定的几秒钟后隐藏/消失/蒸发。或者单击一个按钮,它会隐藏/消失/蒸发 - 我在下面的警报组件示例中显示了这一点。在某个预定义的时间后我根本无法隐藏,并且单击和隐藏有效,但取消隐藏也会产生问题。我在 App.vue 文件中使用 setTimeout 方法在 5 秒后自动隐藏,并且什么都不会发生我认为该方法在 Alert 模块被导入之前触发......我想。
到目前为止,这是我的代码......看起来很简单的任务,但在过去的几个小时里它一直在破坏我的大脑:
应用组件:
<template>
<div id="app">
<alert v-if="alert" v-bind:message="alert"></alert>
<router-view></router-view>
</div>
</template>
<script>
import Alert from './components/frontend/alert'
export default {
name: 'App',
data() {
return {
alert: ''
}
},
updated: function() {
if(this.$route.query.alert){
this.alert = this.$route.query.alert;
// This was for me to test the click even - PREFER AUTO HIDE AFTER A FEW SECONDS
// This returns an error on form submit - see error below
document.querySelector('.alert').style.display = 'block';
}
},
components: {
'alert': Alert
}
}
</script>
这是警报组件:
<template>
<div class="alert">
<p class="text-brand m-20">
<button class="btn btn-small btn-brand" v-on:click="hideAlert()">Close</button>
{{message}}
</p>
</div>
</template>
<script>
export default {
name: 'alert',
props: ['message'],
data () {
return {
}
},
methods: {
hideAlert() {
// This was for me to test the click even - PREFER AUTO HIDE AFTER A FEW SECONDS
document.querySelector('.alert').style.display = 'none';
}
}
}
</script>
使用点击隐藏时出错 - 来自 App.vue 文件:
[Vue warn]: Error in updated hook: "TypeError: Cannot read property 'style' of null"
found in
---> <App> at src/App.vue
<Root>
我怎样才能让 Alert 组件在 App 根组件之后隐藏,比如说 5 秒?这将是我的首选方法,否则我该怎么做才能让点击和隐藏工作?
非常感谢!
【问题讨论】:
标签: javascript vue.js settimeout