iview的Submenu 我想点击一个按钮触发展开,但是数据改了,可是前段没有渲染

发布于 2022-09-11 23:23:44 字数 1050 浏览 24 评论 0

image.png

    <Menu width="90%" style="margin:0 auto;" :open-names="openNameList" ref="side_menu">
      <Submenu :class="card-a-${count}" :name="card-a-${count}" v-for="(item, count) in card.list">
                        <template slot="title"><b>{{'0'+(count+1)}}&nbsp;&nbsp;&nbsp;{{item.name}}<span class="fr">{{item.amount.toFixed(2)}}</span></b>
                        </template>
                        <MenuItem :name="card-a-${count}-${number}" v-for="(item, number) in item.list">提单号:
                            {{item.masterBill}}<span class="fr">{{item.amount.toFixed(2)}}</span></MenuItem</Submenu>
    </Menu>

我点击全部展开触发下面的方法

    showOrhideItems: function () {
        this.openNameList = ['card-a-0','card-a-1'];
        console.log(this.openNameList);
    },
  

虽然只变化了,但是页面上这些menuItem没有变化,还都是关闭的?该怎么解决??

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

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

发布评论

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

评论(3

[浮城] 2022-09-18 23:23:44

遍历 card.list,然后 this.openNameList.push('card-a-0') 试试

烟柳画桥 2022-09-18 23:23:44

data 里面必须初始有openNameList 这个字段 vue是不支持后往data添加属性的监听的 不知道你是否有初始

然后这里 没有用箭头函数 this容易在调用时指向错误 组件里最好是统一箭头函数
showOrhideItems: function () {

this.openNameList = ['card-a-0','card-a-1'];
console.log(this.openNameList)

}

套路撩心 2022-09-18 23:23:44

===========================================正确答案==============================
执行完

this.openNameList = ['card-a-0','card-a-1'];

之后还要走下面的方法

this.$nextTick(() => {
     let sideMenu = 'side_menu' + type + index
     _this.$refs[sideMenu][0].updateOpened();
     _this.$refs[sideMenu][0].updateActiveName();
})
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文