我想在我的Vue组件中的v-for中运行一个方法。 例如:
OR
当我这样做时,p-tag只是保持空白。这是我的方法(使用axios调用):
<div v-for="(foo,index) in bar">
<p>{{myMethod(foo,index)}}</p>
</div>
当我 myMethod:function(foo,index) {
axios.get('/myAjaxCall')
.then((response)=> {
//works perfectly
alert(response.data);
return response.data;
})
.catch(function (error) {
console.error(error);
});
},
}
时,浏览器正在显示我需要的内容。当我删除axios调用时,该方法似乎正常工作
谢谢!
答案 0 :(得分:0)
您的代码中存在问题。你错过了一个报价
<div v-for="(foo,index) in bar">
<p>{{myMethod(foo,index)}}</p>
</div>
请参阅以下jsbin http://jsbin.com/wovavut/edit?html,js,output
答案 1 :(得分:0)
我认为你不应该在myMethod
v-for
axios是异步的
尝试在另一种方法中使用myMethod
执行bar
,获取数据newbar
,您可以呈现newbar
<div v-for="(foo, index) in dataBar">
<p>{{otherSimpleMethod(foo, index)}}</p>
</div>
dataBar
myMethod
bar
执行newMethod
dataBar
newMethod
(axios响应)
newMethod
中的mounted
(我想你想在页面加载后这样做)或者您可以尝试nextTick
BTW,标题Vue.js Use mounted in v-for
???也许Vue.js Use method in v-for
???
答案 2 :(得分:0)
我也不相信您应该使用v-for
中的方法,而是使用一个计算属性,将您的方法应用于可能位于data
某处的项目的未处理数组: