ss098
V2EX  ›  Vue.js

请教一个关于 Vue.js 条件渲染与属性的问题

  •  
  •   ss098 ·
    ss098 · Oct 10, 2016 · 4615 views
    This topic created in 3536 days ago, the information mentioned may be changed or developed.

    现在有如下数据:

    items: [
        {is_view: true}
        {is_view: false}
    ]
    

    以及如下代码:

    <div class="list">
        <div v-for="item in items">
            <div v-if="item['is_view']" class="list-item">
                <!--其他复杂的逻辑判断-->
            </div>
        </div>
    </div>
    

    我需要在 is_view 为 true 的情况下让 class 变为 .list-item .read ,所以用 v-else 。

    <div class="list">
        <div v-for="item in items">
            <div v-if="item['is_view']" class="list-item read">
                <!--其他复杂的逻辑判断-->
            </div>
            <div v-else class="list-item">
                <!--其他复杂的逻辑判断-->
            </div>
        </div>
    </div>
    

    这会导致里面的逻辑重复出现两次, Vue.js 文档里提到的《 Class 与 Style 绑定》似乎需要在 data 中创建一个数据对象,但是我这里有一个列表,这可能就不太适用了。

    请问大家,这个情况正确的解决方案是?

    谢谢。

    8 replies    2016-10-10 20:51:33 +08:00
    yangxiongguo
        1
    yangxiongguo  
       Oct 10, 2016   ❤️ 1
    class={{item['is_view']?'classA':'classB'}}

    大概这样可以吗?没实际跑过,就一个思路
    mufeng
        2
    mufeng  
       Oct 10, 2016   ❤️ 1
    这样就好 :class="{'red': item.is_view}"
    mufeng
        3
    mufeng  
       Oct 10, 2016   ❤️ 1
    @yangxiongguo 官方推荐 bind-class
    MaiCong
        4
    MaiCong  
       Oct 10, 2016 via iPhone   ❤️ 1
    :class="{'read': item.is_view === true}"
    ss098
        5
    ss098  
    OP
       Oct 10, 2016
    非常感谢各位菊苣,问题已经解决,代码如下:

    <div v-bind:class="{'list-item read': item.is_view, 'list-item': !item.is_view">
    ----<!--其他复杂的逻辑判断-->
    </div>

    @yangxiongguo
    @mufeng
    @MaiCong
    MaiCong
        6
    MaiCong  
       Oct 10, 2016 via iPhone
    @ss098 去掉不必要的代码:

    <div :class="{'list-item read': item.is_view>
    ----<!--其他复杂的逻辑判断-->
    </div>
    MaiCong
        7
    MaiCong  
       Oct 10, 2016 via iPhone
    @ss098 手机打字,有点手抖
    <div :class="{'read': item.is_view>
    ----<!--其他复杂的逻辑判断-->
    </div>
    MaiCong
        8
    MaiCong  
       Oct 10, 2016 via iPhone   ❤️ 1
    =_=

    <div :class="{'read': item.is_view}">
    ----<!--其他复杂的逻辑判断-->
    </div>
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1049 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 18:32 · PVG 02:32 · LAX 11:32 · JFK 14:32
    ♥ Do have faith in what you're doing.