【发布时间】:2017-12-31 17:16:49
【问题描述】:
这是我第一个使用 Vuejs 的项目。
我有我的主要组件。在我的主要组件中,我有一个数据变量,它是一个数组。例如:
export default {
name: 'example-component',
data() {
return {
options: [
{
text: {
nl: 'Jan',
en: 'John',
},
action: 'x1',
},{
text: {
nl: 'Jansen',
en: 'Doe',
},
action: 'x2',
},
],
}
},
}
在我的 <example-component> 模板中,我在另一个组件中使用了 v-for 循环。如下图:
<my-other-component v-for="option in options" v-on:click.native="select(option.action)"
:key="option.id"></my-other-component>
这似乎工作正常。
<my-other-component> 第一次出现在屏幕上时会有动画。
在我的example-component 的methods 部分中,有一种方法有时会清空options 数组并用不同的对象重新填充它。如果这个方法现在运行,前两个选项将没有有这个动画,但是第三个、第四个、第五个等等会有。
因此,该动画似乎会在首次在 options 数组中创建特定索引时触发。
有谁知道这是为什么以及如何解决这个问题?
PS:我的(相关)CSS:
.option {
animation-timing-function: linear;
animation-name: option;
animation-duration: 2.5s;
}
@-webkit-keyframes option{
0% { opacity: 0; }
75% { opacity: 0; }
100% { opacity: 1; }
}
-
编辑 1:
添加animation-iteration-count: infinite 并不能解决问题。它只是重复动画。 (->“选项”每 2.5 秒消失并重新出现一次)
编辑 2:
我试着摆弄了一下。这似乎与时间有关。如果在删除操作选项和再次添加它们之间有 足够的时间,动画似乎可以正常工作。
另外,我尝试了不同的方法来清空我的数组,IE:
this.options = [];
this.options.length = 0;
this.options.splice(0, this.options.length);
// And all the other goodness
但它们似乎都不会影响这个问题。
【问题讨论】:
-
在提供的代码 sn-p 中,您的选项没有
id并且:key属性无法按预期工作。您必须在每个:key中提供不同的值 -
这行得通。但这似乎很奇怪,遵循理论。我想我的“合乎逻辑”的想法并不像我想象的那么合乎逻辑。谢谢!
标签: javascript css vue.js css-animations vuejs2