vue的条件渲染名字用字符串拼接失效

如题,
html:

<div id="demo">
    <p v-if="a1">hello</p>
</div>`
var vm = new Vue({
    el: '#demo',
    data: {
        show: true,
        a1:false,
        t:0,
    },
    methods: {
        init:function() {
            vm.t++;
            var n = "a" + vm.t;
            vm.n = true;
            console.log(n);
            console.log(vm.n);
        }
    }
});
vm.init();

打开页面后,p标签没有显示出来,这是为什么?
控制台输出正常:

clipboard.png

阅读 3.6k
3 个回答

vm.n表示vm对象下面的属性n,你想要操作a1属性,应该是这样的vm[n]

// vm.n = true;
this.$set(n, true);
新手上路,请多包涵

p元素当然是不会显示的,vue中v-if指令是表示条件渲染,你已经给v-if赋值为al,而al的值为false所以是不会渲染的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题