【发布时间】:2020-08-27 15:29:27
【问题描述】:
我构建了一个 vue 组件,它通过来自外部 laravel 刀片的 prop 获取一个数值,如下所示:
<my-custom-template :mynumber="{{$numbervalue}}" :list:{{$alist}}></my-custom-template>
在模板中我有一个 v-for 列表和道具:
props:{
list:Array,
mynumber: Number,
[..]
}
和
<template>
<ul>
<li v-for="item in list">{{item}}<span v-if="item.id == mynumber">active</span></li>
</ul>
</template>
只要项目的 ID 与值 mynumber 相同,我希望显示“活动”标签/跨度。
现在在这个模板中,我还有一个发送 axios 请求的方法,成功后它会改变 prop "mynumber" 的值,因此应该重新呈现列表:
axios.post('/api/someurl', this.obj)
.then(res => {
this.mynumber= res.data[something]; // returns a new number from the db.
})
.catch(error => { [..]
};
问题:如果我在列表的 v-if 条件中使用 this.mynumber,则永远不会显示“活动”标签。如果我直接使用 == mynumber 那么它可以工作,但我不能用 axios 响应来改变它。 我应该如何正确处理这个问题? 如何使用 axios 调用中的新值更改初始道具?
【问题讨论】:
标签: vue.js