Vue.js"track-by-$index”;,如何单独呈现列表项
Vue.js "track-by $index", how to render list items individually
直到最近,我还在Vue实例中使用v-show
显示数组中的每个元素,每次一个。我的html有以下行:<li v-for="tweet in tweets" v-show="showing == $index">{{{ tweet }}}</li>"
。我的根Vue实例是这样构建的(谢谢@Jeff!):
new Vue({
el: '#latest-tweets',
data: function(){
return {
tweets: [],
showing: 0
};
},
methods:{
fetch:function(){
var LatestTweets = {
"id": '706642968506146818',
"maxTweets": 5,
"showTime": false,
"enableLinks": true,
"customCallback":this.setTweets,
"showInteraction": false,
"showUser": false
};
twitterFetcher.fetch(LatestTweets);
},
setTweets: function(tweets){
this.tweets = tweets;
console.log(tweets);
},
rotate: function(){
if(this.showing == this.tweets.length - 1){
this.showing = -1;
}
this.showing += .5;
setTimeout(function(){
this.showing += .5;
}.bind(this), 1000);
}
},
ready:function() {
this.fetch();
setInterval(this.rotate, 10000);
}
一切都很好,直到我遇到重复的值。为了处理这些问题,我用track-by $index
替换了v-show
,正如这里所指定的那样。我现在在我的html:<li v-for="tweet in tweets" track-by="$index">{{{ tweet }}}</li>
上有了这个。问题是,不是单独渲染每个列表项,而是同时渲染整个列表。
至于上面的rotate
方法,由于我不能做track-by="showing == $index"
,所以现在它是无用的。据我所知,这是由于Vue无法检测到数组长度的变化。这里详细介绍了一种变通方法,即"用空数组替换项",但我没有这样做。我想不出我错过了什么。
以下是几个JsFidles,包括v-show
和track-by $index
。
解决方案毕竟相当简单,结果代码更精简。完全取消v-for
和track-by $index
指令,并使用计算的属性来实现这一点:
computed: {
currentTweet: function () {
return this.tweets[this.showing]
}
}
在html文件中,这只是一个添加计算属性currentTweet
的问题,就像你通常会添加的那样,带有一个小胡子标签,在这里被解释为原始html:
<li>{{{ currentTweet }}}<li>
因此不需要这样的东西:
<li v-for="tweet in tweets" track-by="$index">{{{ tweet }}}</li>
Js在此处出价
相关文章:
- (取消)使用单独的复选框激活复选框列表
- Codrops页面转换.如何创建单独的按钮,而不是列表项目的效果
- 使用Angular排序到单独的列表中
- Vue.js"track-by-$index”;,如何单独呈现列表项
- 使用php创建的下拉列表中的选择单独填充文本区域
- 角度过滤器ng重复到单独的列表中
- 尝试将长列表排序为单独的列
- 将单个 json 拆分为单独的列表
- 使用 C# MVC 将值列表放入单独的文本框中
- 如何在C# MVC的VIew中将列表数组拆分为单独的数组
- 如何制作一个项目列表,可以使用 Angular JS 单独切换
- 根据一个子jQuery单独隐藏下拉列表
- 分开一个段落列表,给每个单词单独的CSS
- 如何以大写字母单独显示下拉列表的选定值
- 嵌套列表-在单独的一行上显示每个ul级别
- 使用jquery填充UL列表,但不调用单独的JavaScript函数
- 如何将参数的字符串列表传递给函数,并将它们作为单独的参数分配
- React / Redux—假设我们有两个单独的待办事项列表,已完成的和未完成的
- 使用jQuery在单独的无序列表中查找具有匹配类名的列表项
- AngularJS:使用列表项作为单独列表的变量