我目前正在学习vue.js,无法访问方法中的数据。
加载数据并将其设置为全局变量(现在,这可能会改变,但现在我认为不是问题的一部分)
通过ajax调用收到此数据:
数据":[{"的itemId":" 58646f066803fa62388b4573""颜色":"#ffb878"&#34 ;名称":" TEST1""的startDate":" 04/24/2017年""工作":" 9.25"},{"的itemId":" 58646f066803fa62388b4572""颜色":"#ffb878""名称& #34;:" TEST2""的startDate":" 04/24/2017年""工作":" 4.25& #34;},{"的itemId":" 58646f066803fa62388b4571""颜色":"#a4bdfc""名称&#34 ;:" TEST3""的startDate":" 05/01/2017""工作":" 24.00&#34 ;}]
通过以下方式设置为全局(可变数据在函数外部设置):
...成功:功能(jsonObj) { 数据[' item'] = jsonObj.data
...
现在为vue部分:
var app = new Vue({
el:'#canvas',
data: {
items: data['item']
},
methods: {
moveItem: function(){
console.log("new date: "+this.startDate);
}
}
})
html:
<div v-for="row in items" class="entirerow" v-bind:id="'row'+row.itemId">
<div class="itemrow">{{ row.name }}</div>
<div class="itemrow"><input type="text" v-model="row.startDate" @change="moveItem"></div>
<div class="itemrowlast">{{ row.work }}</div>
</div>
这很好地显示了3行,每行都有正确的数据。到现在为止还挺好。但是现在,如果我在输入值中更改某些内容,则会触发方法moveItem,但会声明&#34; new date:undefined&#34;在console.log中
我已经尝试过console.log(&#34;新日期:&#34; + this.items.startDate),但没有雪茄,然后看起来这个方法似乎不知道哪个行被处理。
如何从循环中的某一行访问方法中的正确数据?
谢谢!
答案 0 :(得分:0)
您在方法( this.startDate )中引用数据对象而不是项目
moveItem: function(){
console.log("new date: "+this.startDate);
}
您可以像这样更改代码
<强>模板强>
@change="moveItem(row)"
<强>脚本强>
moveItem: function(row){
console.log("new date: " + row.startDate);
}