VueJS更新调用后简单方法不工作

问题描述:

我想动态更改按钮的颜色,当我点击它们。因此,我添加了一个只在属性isActive设置为true时才分配的自定义类“活动”。点击我想调用一个方法,将属性更改为true,然后更新dom以添加自定义类。任何帮助表示赞赏;)VueJS更新调用后简单方法不工作

<div v-for="(funktion, index) in funktions"> 
      <button class="btn btn-default wordcloud" 
        :class="{ 'custom-active': funktion.isActive }" 
        @click="activate(index)">{{funktion.name}}</button> 
</div> 

的方法正确地更新数据,但DOM不更新

export default { 

    data() { 
    return { 
     funktions: [ 
      { 
      name: "finanzen", 
      isActive: false 
      }, 
      { 
      name: "management", 
      isActive: false 
      }, 
      { 
      name: "testfield", 
      isActive: false 
      }, 
     ], 
    }; 
    }, 
    methods: { 
    activate(index){ 
     this.funktions[index].isActive = true; 
    }, 
}; 

你没有通过索引到activate回调。将其更改为:

@click="activate(index)">{{funktion.name}}</button> 

如果您在控制台看你有会给你一个线索,因为你试图访问某个项目的数组与非数字的例外。

new Vue({ 
 
    el: '#app', 
 
    data() { 
 
    return { 
 
     funktions: [ 
 
      { 
 
      name: "finanzen", 
 
      isActive: false 
 
      }, 
 
      { 
 
      name: "management", 
 
      isActive: false 
 
      }, 
 
      { 
 
      name: "testfield", 
 
      isActive: false 
 
      }, 
 
     ], 
 
    }; 
 
    }, 
 
    methods: { 
 
    activate(index){ 
 
     this.funktions[index].isActive = true; 
 
    }, 
 
\t }, 
 
})
.custom-active { 
 
    background-color: red; 
 
}
<script src="https://unpkg.com/vue"></script> 
 

 
<div id="app"> 
 
    <div v-for="(funktion, index) in funktions"> 
 
    <button class="btn btn-default wordcloud" 
 
     :class="{ 'custom-active': funktion.isActive }" 
 
     @click="activate(index)">{{funktion.name}}</button> 
 
    </div> 
 
</div>

+0

对不起当然,我已经这样做的,它从问题的错误,我将修改。任何其他想法? –

+0

然后我不确定你在问什么,因为你的代码已经在点击时添加了活动类? –

+0

单击数据更改正确,但Dom不更新。如果我手动将“isActive”更改为true,则该类会在重新加载时正确指定 –