2017-08-02 41 views
2

我想在我的Vue组件中的v-for内运行一个方法。 例如:Vue.js v-for的使用方法

<div v-for="(foo,index) in bar"> 
     <p>{{myMethod(foo,index)}}</p> 
</div> 

当我这样做时,p标签只是保持空白。这里是我的方法(与爱可信调用):

myMethod:function(foo,index) { 
    axios.get('/myAjaxCall') 
    .then((response)=> { 
     //works perfectly 
     alert(response.data); 
     return response.data; 

    }) 
    .catch(function (error) { 
     console.error(error); 
    }); 
    }, 
} 

当我alert(SomethingWithFooAndIndex),浏览器显示正是我需要的。当我删除axios调用该方法似乎工作

谢谢!

+0

你错过了关于属性btw的结束报价 –

+0

这只是一个简化的例子,我在ajax url –

回答

0

您的代码存在问题。你错过了报价 <div v-for="(foo,index) in bar"> <p>{{myMethod(foo,index)}}</p> </div>

请参考以下jsbin http://jsbin.com/wovavut/edit?html,js,output

+0

中使用它们这不是错误。我会更新问题 –

+0

您仍然可以参考jsbin –

+0

感谢您,我发现axios正在导致问题。 Chekc我编辑的问题请 –

0

我不认为你应该在v-for

axios使用myMethod是异步

尝试其他方法来执行myMethodbar,得到一个数据newbar,你可以渲染的newbar

<div v-for="(foo, index) in dataBar"> <p>{{otherSimpleMethod(foo, index)}}</p> </div>

  1. 添加dataBar数据
  2. newMethod
  3. myMethod可变bar在另一种方法newMethod
  4. 更新dataBar(在爱可信响应)做mountednewMethod(我猜你想在页面加载后执行此操作)

或者你可以尝试nextTick

BTW,标题Vue.js Use mounted in v-for ???也许Vue.js Use method in v-for ???

0

我也不相信你应该在v-for使用的方法,而是采用适用的方法,你的项目的未处理阵列可能某处坐在data一个计算性能:

Vue.js 2: Computed

+0

但我需要在我的方法for循环foo。我认为你不能将变量添加到计算函数中 –

+0

@SanderVanKeer:如果你的数据来自某处(可以创建或作为道具设置),你可以循环/映射并保存它(充实可能来自api调用的数据或用户存储)到计算出的属性。或者,您可以使计算的函数完成您需要对原始数据执行的所有操作,然后对其进行迭代。你能提供更多的上下文吗? –