输入模型的Vuejs v-if条件


vuejs v-if condition for input model

我正在学习vue.js我想显示表格data。我的意见是,当显示模式表只是显示。当我点击表格行的编辑按钮时,我希望这行转换为模型。

这是我的代码:' ' '
<table class="table table-bordered">
    <thead>
        <tr>
            <th>id</th>
            <th>name</th>
            <th>pass</th>
            <th>action</th>
        </tr>
    </thead>
    <tbody>
        <template v-for="data in apidata" track-by="$index">
            <tr>
                <td>{{$index + 1}}</td>
                <td>
                    <div v-show="data.editmode"><input v-model="data.name"></div>
                    <div v-else>{{data.name}}</div>
                </td>
                <td>
                    <div v-if=data.editmode><input v-model="data.name"></div>
                    <div v-else>{{data.name}}</div>
                </div>
                </td>
                <td>
                    <button v-on:click="remove($index)" class="btn btn-danger">remove</button>
                    <button v-on:click="edit(data)" class="btn btn-danger">edit</button>
                </td>
            </tr>
        </template>
    </tbody>
</table>
```
my data is like this
    [{name:'test', pass:'1'}, {name:'test2', pass:'2'}]
i bind a edit()function to listen the click event.
    edit: function(data){
                alert(data.editmode);
                data.editmode = true;
            }

我想当我点击。因为数据。Editmode将更改为true。这一行将转换为输入模式。但这没有用。我试过v-if=data。编辑模式,v-if="数据。编辑模式",v-show = "数据。编辑模式",仍然一无所获我不知道为什么?

您只需要在您的数据声明中包含editmode,以便它是一个响应性数据项。

new Vue({
  el: 'body',
  data: {
    apidata: [{
      name: 'test',
      pass: '1',
      editmode: false
    }, {
      name: 'test2',
      pass: '2',
      editmode: false
    }]
  },
  methods: {
    edit: function(data) {
      data.editmode = !data.editmode;
    }
  }
});
<script src="//cdnjs.cloudflare.com/ajax/libs/vue/1.0.27/vue.min.js"></script>
<table class="table table-bordered">
  <thead>
    <tr>
      <th>id</th>
      <th>name</th>
      <th>pass</th>
      <th>action</th>
    </tr>
  </thead>
  <tbody>
    <tr v-for="data in apidata">
      <td>{{$index + 1}}</td>
      <td>
        <div v-if="data.editmode">
          <input v-model="data.name">
        </div>
        <div v-else>{{data.name}}</div>
      </td>
      <td>
        <div v-if=data.editmode>
          <input v-model="data.pass">
        </div>
        <div v-else>{{data.pass}}</div>
      </td>
      <td>
        <button v-on:click="remove($index)" class="btn btn-danger">remove</button>
        <button v-on:click="edit(data)" class="btn btn-danger">edit</button>
      </td>
    </tr>
  </tbody>
</table>