V-for通过vue.js中的对象
v-for through an object in vue.js
我有一个Teams对象,它有all
队的记录,也可以是count
队和create
队。我将所有的团队存储为一个对象,因此我可以编写Teams.all["Team 1"]
来选择一个名称为"team 1"的团队。
Teams.js
var Teams = {
all: {},
create: function(teamName) {
var key = 'Team ' + this.count();
this.all[key] = {
'name': teamName,
'score': 0
};
},
count: function() {
var total = 0;
for(var team in this.all){
if(this.all.hasOwnProperty(team)){
total ++;
}
}
return total;
}
}
现在在vue中,我想循环遍历这个。
main.js
var vueApp = new Vue({
el: '#app',
data: {
'Teams' : Teams
},
methods : {
createTeam : function(){
Teams.create('Team ' + (Teams.count() + 1));
}
}
});
然后这不起作用(显然):
index . html
<div id="app">
<ul>
<li v-for="team in Teams.all">{{ team.name }}</li>
</ul>
<button @click="createTeam">Create team</button>
</div>
所以我的下一个猜测是这样的:
index . html
<div id="app">
<ul>
<li v-for="team in Teams.all">{{ Teams.all[team].name }}</li>
</ul>
<button @click="createTeam">Create team</button>
</div>
但这也不行。在Vue中是否有一种方法可以循环遍历对象的属性?
http://codepen.io/EightArmsHQ/pen/wzPKxA你的Teams状态不是响应的,因为你正在向它添加对象键…阅读这里的文档:http://rc.vuejs.org/guide/reactivity.html#Change-Detection-Caveats.
使用this.$set(this.someObject, 'b', 2)
如果你想添加属性到你的状态对象,否则这些将不会是响应性的,并触发视图更新。
也不知道你为什么这么复杂:)。试试这个:
var vueApp = new Vue({
el: '#app',
data: {
teams: []
},
methods: {
addTeam: function() {
this.teams.push({
name: 'Team ' + this.teams.length,
score: 0
})
}
}
});
<div id="app">
<ul>
<li v-for="team in teams">
{{ team.name }}
</li>
</ul>
<button @click="addTeam">Create team</button>
</div>
此处演示:http://codepen.io/anon/pen/qaVbym
相关文章:
- 使用JS将数组转换为json对象
- 查看JS对象的所有键,甚至是getter定义的键
- 在URL中传递JS对象
- 为什么要包装每一个原型“;类“;JS中具有匿名函数的对象
- 当属性不一致时,如何根据属性对JS对象列表进行排序
- Node.js中的JavaScript原型对象效率
- 如何使用自定义功能覆盖时间轴对象.js时间轴对象的_repaintMinorText
- 如何在第三轴上旋转 3D 对象.js
- 三个中是否有容器类型对象.js来转换一组子对象
- 从 JSON 对象 - JS 周围删除双引号
- 删除对象JS中的节点
- 在对象数组中搜索非空对象JS
- 按未定义的值从数组中选择对象?JS
- 递归循环,直到我们'重新处理对象[JS]
- 向窗口对象-js添加新属性时得到通知
- 如何包含对象/关联数组到对象(js)
- 加载依赖于页面的面向对象JS属性的最好方法是什么?
- 合并新的数组对象到现有的对象js
- 获取带有下划线的数组中的对象.js
- 在带有下划线的嵌套集合中查找对象.js