我正在尝试弄清楚如何让我的动态生成的按钮在一个for循环中每个都有一个单独的加载器。
我遇到的问题是,当这些按钮在for循环中,其中一个被单击时,它们都显示加载指示器。我希望只有被单击的按钮显示加载指示器。
超文本:
<div v-for="(item, i) in items" :key='i'>
<v-btn
dark
color="pink"
:loading="loading"
@click="loader = 'loading'"
>
<v-icon>location_on</v-icon> Lookup
<span slot="loader">locating...</span>
<span slot="loader" class="custom-loader">
<v-icon dark>cached</v-icon>
</span>
</v-btn>
</div>
脚本
data () {
return {
loader: null,
loading: false
}
},
假设我有3个项目。上面的代码将生成3个按钮,但它们都将共享相同的加载参数。我如何让每个按钮使用其唯一的加载参数?一如既往,任何和所有的帮助都非常感谢。
3条答案
按热度按时间eoigrqb61#
您正在为所有按钮使用相同的data属性,因此这些按钮共享相同的
loading
状态,这会同时影响,为了有所区别,请尝试添加名为index
的data属性,该属性表示当前单击的按钮索引:以及将加载 prop 绑定到条件
loading && i==index
并在点击事件@click="loader = 'loading';index=i"
时更新当前索引:ljsrvy3e2#
它实际上比你想象的要容易得多:
一开始
loading[index]
是未定义的,所以它会被评估为false,一旦你在click事件中建立了它的值,它会被评估为true,它对我很有效,希望它能有所帮助。oknwwptz3#
你可以使用React数组来防止像这样改变索引。
别忘了根据项目的长度输入false,示例如下: