2017-08-28 66 views
1

我有2个输入,称为列和行,我可以改变,它们与表格的列和行有关。双向绑定不能与表行和列共同工作

我想查看表格并编辑他的内容,此刻我有一个v-model,它使用行和列更新我的数据,并且需要将它放在我的v-for表格中,以便表格应该自动更新。

问题是表没有被更新。

这是我有:

<div class="col-md-2"> 
    <input type="number" min="1" v-model="table.rows" class="form-control" id="rows"> 
</div> 
<label for="columns" class="control-label col-md-1">columns:</label> 
<div class="col-md-2"> 
    <input type="number" min="1" v-model="table.cols" class="form-control" id="cols"> 
</div> 

<table class="table"> 
    <tbody v-for="row in table.rows"> 
     <tr> 
      <td contenteditable="true">John</td> 
     </tr>  
    </tbody> 
</table> 

data() { 
    return { 
     table: { 
      rows: 1, 
      cols: 1, 
      key: "Table", 
      tableStyle: 1, 
     }, 
     insert: 1, 
    } 
} 

任何帮助吗?

+0

你是说如果将table.rows更改为像3这样的新值,不会导致表格被重新排列为3行?如果您的代码片段在页面上正确使用,应该这样做。如果不是,那么请显示创建vue实例和vue实例绑定到的html的完整代码。 –

+0

我还原了上次编辑时意外删除的代码。 – Bert

+0

NP伯特,发生:) –

回答

1

由于没有将文本字段绑定到任何模型,表格未更新。

你需要添加一个@input事件和更新的模式,当触发

<table class="table"> 
    <tbody v-for="row in table.rows"> 
    <tr> 
     <td contenteditable="true" @input="updateContent($event)">John</td> 
    </tr>  
    </tbody> 
</table> 

data() { 
    return { 
     table: { 
      rows: 1, 
      cols: 1, 
      key: "Table", 
      tableStyle: 1, 
      text: 'Default text' 
     }, 
     insert: 1, 
    } 
}, 
methods: { 
    updateContent (evt){ 
    //get the text 
    const text = evt.srcElement.innerText; 
    //update the model 
    this.table.text = text 
    } 
} 

显然,这会改变整个表,你可以改变table.row为与文字更复杂的对象,然后更改每行的文本

+0

这是不正确的,有人决定编辑我的问题,并删除我更新模型的部分,我不能拒绝:( –

+0

该问题与我的输入是一个astring –