鍍金池/ 問答/HTML/ element-ui 中 el-popover 組件嵌套表格,如何使表格數(shù)據(jù)動(dòng)態(tài)

element-ui 中 el-popover 組件嵌套表格,如何使表格數(shù)據(jù)動(dòng)態(tài)刷新?

簡化描述如下。

組件代碼:

<el-table :data="tableData">
    <el-table-column>
        <template slot-scope="scope">
            <el-popover ref="myPopover" trigger="click">
                <el-table :data="scope.row.name">
                    <el-table-column prop="firstName" label="firstName"></el-table-column>
                    <el-table-column prop="lastName" label="lastName"></el-table-column>
                </el-table>
            </el-popover>
            <el-button v-popover:myPopover>查看</el-button>
        </template>
    </el-table-column>
</el-table>

如上,主頁面有一個(gè)el-table,頁面加載時(shí),通過自定義的this.getData()函數(shù)從后臺(tái)數(shù)據(jù)庫獲取到tableData數(shù)據(jù),其結(jié)構(gòu):

tableData: [
    {name: [{firstName: 'Nick', lastName: 'Young'}], age:22},
    {name: [{firstName: 'Allen', lastName: 'Zhang'}], age:23}
]

當(dāng)點(diǎn)擊查看按鈕時(shí),能夠正常顯示el-popover中嵌入的表格數(shù)據(jù)。


另外有一個(gè)editData()函數(shù),它的功能是:向后臺(tái)發(fā)送put請求,修改數(shù)據(jù)庫中的一條數(shù)據(jù),比如將
{name: [{firstName: 'Allen', lastName: 'Zhang'}], age:23}
修改為:
{name: [{firstName: 'Jack', lastName: 'Ma'}], age:18},
然后調(diào)用this.getData()函數(shù)刷新當(dāng)前tableData數(shù)據(jù)。

現(xiàn)在問題來了。實(shí)際中,當(dāng)執(zhí)行this.editData()函數(shù)后,點(diǎn)擊查看按鈕,并不會(huì)顯示el-popover中的表格數(shù)據(jù);但是當(dāng)刷新當(dāng)前頁面后,就能夠正常顯示出來。


目前找了一個(gè)比較笨的解決方法:在editData()函數(shù)的最后使用this.$router.push刷新當(dāng)前頁面,弊端是頁面有較為明顯的刷新動(dòng)效,體驗(yàn)不佳。

請問各位碰到過類似問題么?有啥比較好的解決方法沒?

回答
編輯回答
裸橙

在數(shù)組或者對象中,通過id或者其它標(biāo)志找到你要更新的數(shù)據(jù),通過this.$set(this.someObject,'b',2)更新數(shù)據(jù)。
關(guān)于數(shù)組,對象有不同的更新方法,詳情參見:https://cn.vuejs.org/v2/guide...

2018年7月27日 06:15
編輯回答
柒槿年

沒更新的話應(yīng)該是你的table中的數(shù)值沒更新成功,
tableData.push('a');
tableData.pop('a');
從而促使table中的數(shù)值更新成功,就可以了

2018年5月28日 23:50