javascript - Vue 模板不更新

标签 javascript vue.js vuejs2

我正在用 VueJS 构建我的第一个项目,但我无法使用 v-if 获取模板来显示/隐藏。我有一个数据模型 bool 变量 (groups.categories.descEditable),我正在切换它以显示/隐藏模板。出于某种原因,当我更改该值时,模板不会自行更新。

<tbody v-for="group in groups">
    ...
    <tr v-for="cat in group.categories">
       ...
        <td class="td-indent">
            <input v-if="cat.descEditable" :value="cat.description" type="text" class="form-control">

            <div v-else v-on:click="editDesc(cat.id)">{{ cat.description }}</div>


            <div>{{cat.descEditable}}</div>
        </td>
        ...
    </tr>
</tbody>


methods: {
    editDesc (cat_id) {

        let vm = this

        this.groups.forEach(function(group, gr_ind){
            group.categories.forEach(function(cat, ind) {

                if (cat_id == cat.id)
                    cat.descEditable = true
                else 
                    cat.descEditable = false
            })
        })
    }
},

所以我希望文本输入显示 descEditable 是否为真(单击包含描述的 div 后),否则显示具有静态描述值的 div。 descEditable 属性似乎正在正确更新,但输入元素上的 v-if 没有对其使用react。我一定是误解了 vuejs 的一些基本知识,只是无法弄清楚它是什么。

最佳答案

我认为您可以完全放弃 editDesc 方法。

console.clear()

const groups = [
  {
    categories:[
      {
        descEditable: false,
        description: "click me"
      
      }
    ]
  }
]


new Vue({
  el:"#app",
  data:{
    groups
  }
})
<script src="https://unpkg.com/vue@2.2.6/dist/vue.js"></script>
<div id="app">
  <table>
    <tbody v-for="group in groups">
      <tr v-for="cat in group.categories">
        <td class="td-indent">
          <div v-if="cat.descEditable">
            <input v-model="cat.description" type="text" class="form-control">
            <button @click="cat.descEditable = false">Save</button>
         </div>
         <div v-else @click="cat.descEditable = true">{{ cat.description }}</div>
       </td>
      </tr>
    </tbody>
  </table>
</div>

关于javascript - Vue 模板不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44662803/

相关文章:

javascript - 闪存/AS3 : ExternalInterface. 调用() "Why u no console.log?"

javascript - 支持地理定位但不起作用

vue.js - 我可以在同一个应用程序中拥有多个 SPA 或在同一个应用程序中使用历史记录和哈希路由吗?

javascript - VUE JS 中的 "reversedList"计算属性出现意外副作用

javascript - vue.js : Property or method "" is not defined, 渲染错误: "TypeError: Cannot read property ' ' of undefined"

javascript - Vuex 如何在安装时访问组件上的状态数据?

java - 无法在此代码中初始化 "document"

javascript - v-on :submit. 防止不停止表单提交

html - 如何使用 el-table (Element UI?

javascript - $scw(...).eventTracking 不是 Sitecore MVC 中 WFFM 中的函数