gpt4 book ai didi

javascript - Vue.js 在计算中获取 v-for 数组值

转载 作者:行者123 更新时间:2023-12-03 06:22:33 25 4
gpt4 key购买 nike

我通过 Laravel 将用户数据传递给组件,该数据包含以英里为单位的距离,但是用户可以选择以公里为单位设置 View 距离,所以我必须传递 profile.distance_mi 来计算,如何我能做到这一点吗?

HTML:

<saved profiles="{{json_encode($profiles)}}" unit="{{Auth::user()->settings->unit}}"></saved>

<div v-for="profile in profiles" class="col-xs-12 col-sm-4 col-md-3">
...
<h4>@{{distance}}</h4>
....
</div>

JS

new Vue(
{
el: 'body',
components:
{
saved:
{
template: '#saved',
props: ['profiles', 'unit'],
created: function ()
{
this.profiles = JSON.parse(this.profiles);
},
computed:
{
distance: function ()
{
var unit = this.unit;
return unit == 0 ? Math.round(distance * 1.60934) + ' km' : distance + ' miles';
}
}
}
}
});

最佳答案

像这样的计算属性在组件的 for 循环中不起作用。

我认为实现您想要实现的目标的最简单方法是制作另一个组件。我有点不清楚你想要观察哪些属性,不观察哪些属性,但我认为这会让你走向正确的方向:

轮廓距离分量

var ProfileDistance = Vue.extend({
props: ['profile'],
template: '<span>{{distance}}</span>',
computed: {
distance: function() {
if (this.profile.hasOwnProperty('distance_mi')) {
return this.profile.distance_mi + ' miles away';
} else if(this.profile.hasOwnProperty('distance_km')){
return this.profile.distance_km + ' kilometers away';
} else {
return 'Distance N/A';
}
}
}
})

当然,请确保在现有的已保存组件内使用此组件

components: {
//....
'profile-distance': ProfileDistance
}

然后只需将您的 profile 作为属性传递给您的 profile-distance 组件即可:

<profile-distance :profile="profile"></profile-distance>

here's a working jsfiddle

关于javascript - Vue.js 在计算中获取 v-for 数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38799546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com