vue 动态改变css不能立刻呈现?

 代码如下:
            <dl>
                <dd id="menuLevel1" v-for="item in menuShowList"
                    :class="{'oneMenuLevel': !item.menuSelected ,'oneMenuLevelFloat':item.menuSelected}"
                    @mouseover="oneMenuLevelOver(item)"
                >
                     {{item.title}}
                </dd>
            </dl>
            

js代码如下:

        oneMenuLevelOver: function (item) {
            if (item && item.hasOwnProperty("menuSelected")){
                item.menuSelected = true;
            }
        },

clipboard.png
鼠标放到菜单1上样式没有立刻改变,当我再次显示菜单的时候改变了

clipboard.png

阅读 4.3k
1 个回答

原因:改变list中的对象属性,并不会触发vue重新刷新list,所以不会立即渲染样式
变更:最后还是改成变量驱动样样式 ,代码如下

                <!--知识点menuIndex赋值 动态切换样式事例-->
                <dd id="menuLevel1" v-for="(item,index) in menuShowList"
                    :class="[{'oneMenuLevelFloat': menuIndex==index }, 'oneMenuLevel'] "
                    @mouseover="oneMenuLevelOver(index)"
                >
                     {{item.title}}
                </dd>

js 代码如下

        //选择一级菜单
        oneMenuLevelOver: function (index) {
            this.menuIndex = index
        },
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏