在v-for vue js中使用或在v-f-if为true之后停止v-for

发布于 2025-01-23 05:50:06 字数 2627 浏览 3 评论 0原文

嘿,我有一个这样的数组:

{
"id": 19,
"title": "jsj",
"orderName": "rendan",
"seller_id": null,
"totalPrice": "24000000",
"pricePaid": "4000000,20000000",
"paid": "1,0",
"dateNumber": [
    "12",
    "فروردین",
    "1400"
],
"arrayCategories": [
    "2",
    "3"
],
"paidDetails": [
    {
        "pricePaid": "4000000",
        "dateOfPayment": "1401/02/05",
        "paid": "1",
        "daysLeft": 3
    },
    {
        "pricePaid": "20000000",
        "dateOfPayment": "1401/02/20",
        "paid": "0",
        "daysLeft": 18
    },
   {
    "pricePaid": "20000000",
    "dateOfPayment": "1401/02/20",
    "paid": "0",
    "daysLeft": 25
   }
],
"priceLeft": 20000000

},

因为您可以看到有一个“付费尾巴”本身包括其他三个对象,

而且我在我的html元素中使用了v-for:

 <tr v-else v-for="(project,index) in resultQuery" :key="'doctor'+index">
                            <th scope="row">@{{project.caseNumber}}</th>
                            <th scope="row">@{{project['seller']}}</th>
                            <td>@{{project['title']}}</td>
                            <td>@{{project['orderName']}}</td>
                            <th>@{{project.dateEnd+'-'+project.dateStart}}</th>
                            <td>کل:
                                @{{Number(project.totalPrice).toLocaleString()+' تومان '}}
                                <br>
                                باقی مانده:
                                @{{Number(project.priceLeft) ? 
                        Number(project.priceLeft).toLocaleString()+' تومان ':project.priceLeft}}
                            </td>
                            <td>
                                <p v-if="payment.paid==0" v-for="(payment,index) in  
                              project.paidDetails" :key="'daysLeft'+index" >
                                    @{{ payment.daysLeft+' روز' }}
                                </p>
                            </td>
                     </tr>

所以我的问题是我如何停止v v v - 在最后一个TD元素中(本身是父v-for内部的另一个v-for);当付款。付费为0且付款。Daysleft少于付费尾尾中的其他对象。

                            <td>
                                <p v-if="payment.paid==0" v-for="(payment,index) in  
                              project.paidDetails" :key="'daysLeft'+index" >
                                    @{{ payment.daysLeft+' روز' }}
                                </p>
                            </td>

我认为我需要的是一个循环,但我不知道该怎么做, 任何帮助将不胜感激

hey i have an array like this:

{
"id": 19,
"title": "jsj",
"orderName": "rendan",
"seller_id": null,
"totalPrice": "24000000",
"pricePaid": "4000000,20000000",
"paid": "1,0",
"dateNumber": [
    "12",
    "فروردین",
    "1400"
],
"arrayCategories": [
    "2",
    "3"
],
"paidDetails": [
    {
        "pricePaid": "4000000",
        "dateOfPayment": "1401/02/05",
        "paid": "1",
        "daysLeft": 3
    },
    {
        "pricePaid": "20000000",
        "dateOfPayment": "1401/02/20",
        "paid": "0",
        "daysLeft": 18
    },
   {
    "pricePaid": "20000000",
    "dateOfPayment": "1401/02/20",
    "paid": "0",
    "daysLeft": 25
   }
],
"priceLeft": 20000000

}

as u can see there is a 'paidDetails' Which itself includes three other objects,

and i've used v-for in my html elements like this:

 <tr v-else v-for="(project,index) in resultQuery" :key="'doctor'+index">
                            <th scope="row">@{{project.caseNumber}}</th>
                            <th scope="row">@{{project['seller']}}</th>
                            <td>@{{project['title']}}</td>
                            <td>@{{project['orderName']}}</td>
                            <th>@{{project.dateEnd+'-'+project.dateStart}}</th>
                            <td>کل:
                                @{{Number(project.totalPrice).toLocaleString()+' تومان '}}
                                <br>
                                باقی مانده:
                                @{{Number(project.priceLeft) ? 
                        Number(project.priceLeft).toLocaleString()+' تومان ':project.priceLeft}}
                            </td>
                            <td>
                                <p v-if="payment.paid==0" v-for="(payment,index) in  
                              project.paidDetails" :key="'daysLeft'+index" >
                                    @{{ payment.daysLeft+' روز' }}
                                </p>
                            </td>
                     </tr>

so my question is how can i stop v-for in the last td element (which itself is a another v-for inside the parent v-for); when payment.paid is 0 and payment.daysLeft is less than the others objects inside the paidDetails.

                            <td>
                                <p v-if="payment.paid==0" v-for="(payment,index) in  
                              project.paidDetails" :key="'daysLeft'+index" >
                                    @{{ payment.daysLeft+' روز' }}
                                </p>
                            </td>

i think what i need is a while loop but i dont know how to do it,
any help would be appreciated

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

往事风中埋 2025-01-30 05:50:06

您的模板用于渲染数据。不要尝试在模板中操纵您的数据。这是一种反模式。

以您希望显示的方式格式化数据,然后在模板中渲染格式化的数据。

如Lissy 93所述,在这种情况下最好的选择可能是在模板中创建一个计算的属性并迭代该属性。

在此处阅读在计算属性上阅读:

https://vuejs.s.s.org/guide/guide/sentials/essentials/compented.html

Your template is for rendering data. Do not try and manipulate your data in the template. This is an anti pattern.

Format your data in the way you want it presented and then render the formatted data in the template.

Your best bet in this instance - as Lissy 93 mentioned - is probably to create a computed property and iterate over that in your template.

Read up on computed properties here:

https://vuejs.org/guide/essentials/computed.html

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文