摘要:使用函數(shù)實現(xiàn)表格與表單之間的雙向綁定以及表格中使用分發(fā)多個,分發(fā)不同的內(nèi)容。主要思路通過給表單組件的進行賦值,之后通過等元素監(jiān)聽事件,進行取值,然后通過表格當(dāng)前行索引對表格相應(yīng)元素進行賦值。
使用render函數(shù)實現(xiàn)表格與form表單之間的雙向綁定以及表格中使用slot分發(fā)(多個slot,分發(fā)不同的內(nèi)容)。
主要思路通過props給表單組件的value進行賦值,之后通過change、blur等元素監(jiān)聽事件,進行取值,然后通過表格當(dāng)前行索引對表格相應(yīng)元素進行賦值。這樣就完成了一個數(shù)據(jù)的雙向綁定了。
我這邊使用的是ivewUI組件庫
{ title: "姓名", key: "name", render: (h, params) => { let self = this; return h("div", [ h("Input", { props: { placeholder: "請輸入....", value:params.row.name }, "on": { "on-blur":() => { self.data1[params.index].name = event.target.value } }, }), h("p",{ style: { color: "red", display: self.data1[params.index].name === "" ? "" : "none" } },"請輸入你的名字....") ]); } }在表格中對一個select實現(xiàn)雙向綁定
{ title: "性別", key: "sex", render: (h, params) => { let self = this; const sexList = [ {name:"男",value:1}, {name:"女",value:2} ] return h("Select",{ props:{ value:params.row.sex }, on :{ "on-change" : (val) => { self.data1[params.index].sex = val; } } },sexList.map(item => { return h("Option",{ props:{ value: item.value, } },item.name) }) ) } }在表格中對一個switch實現(xiàn)雙向綁定,外加slot
{ title: "switch開關(guān)slot實現(xiàn)", key: "switchSlot", renderHeader(h, params) { return h("Tooltip", { props: { placement: "right", content: "switch開關(guān)" } },"switch開關(guān)slot實現(xiàn)") }, render: (h, params) => { let self = this; const switchList = [ { slot: "open", name: "打開" }, { slot: "close", name: "關(guān)閉" } ] return h("i-switch",{ props: { size: "large", value: params.row.switchSlot }, on: { "on-change" : (val) =>{ self.data1[params.index].switchSlot = val; } } // 這樣我們就可以在表格中完美的實現(xiàn)多個slot分發(fā)了 },switchList.map(item => { return h("span",{ slot:item.slot },item.name) })) } }注意
對表格數(shù)據(jù)進行雙向綁定時,不建議直接更改源數(shù)據(jù)源,可以copy出一份臨時數(shù)據(jù)源,在做相應(yīng)修改操作時對臨時數(shù)據(jù)源進行更改,這樣可以大大減少對dom的渲染,在需要的時候再將臨時數(shù)據(jù)源提交到主數(shù)據(jù)源就可以了。
結(jié)尾如果覺得render寫起來很煩的話,可以使用jsx,會大大減少代碼量0.0
源碼地址
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/94565.html
摘要:事件總線事件總線首先創(chuàng)建了一個名為的空的實例然后全局定義了組件最后創(chuàng)建了實例。在父組件模板中,子組件標(biāo)簽上使用指定一個名稱,并在父組件內(nèi)通過來訪問指定名稱的子組件。 學(xué)習(xí)筆記:組件詳解 組件詳解 組件與復(fù)用 Vue組件需要注冊后才可以使用。注冊有全局注冊和局部注冊兩種方式。 全局注冊 Vue.component(my-component, {}); 要在父實例中使用這個組件,必須要...
摘要:根據(jù)組件單向數(shù)據(jù)流和和事件通信機制,需要由子組件通過事件通知父組件,并在父組件中修改原始的數(shù)據(jù),完成狀態(tài)的更新。 本文同步在個人博客shymean.com上,歡迎關(guān)注 寫Vue有很長一段時間了,除了常規(guī)的業(yè)務(wù)開發(fā)之外,也應(yīng)該思考和反思一下封裝組件的正確方式。以彈窗組件為例,一種實現(xiàn)是在需要模板中引入需要彈窗展示的組件,然后通過一個flag變量來控制彈窗的組件,在業(yè)務(wù)代碼里面會充斥著冗余的彈...
摘要:以下內(nèi)容根據(jù)部分速記。同時,需要在父組件標(biāo)簽中添加這個屬性,該屬性才能傳遞到子組件內(nèi)。把父組件傳遞的數(shù)據(jù)當(dāng)做子組件的初始值。 以下內(nèi)容根據(jù)Vue.js Guide Essentials部分速記。 不含動畫/mixin/SSR/路由/狀態(tài)管理等部分. Introduction 建議閱讀原文 https://vuejs.org/v2/guide/in... 什么是Vue 開始 聲明式...
摘要:假如以的作用域鏈作為類比,組件提供的對象其實就好比一個提供給子組件訪問的作用域,而對象的屬性可以看成作用域上的活動對象。所以,我借鑒了作用域鏈的思路,把當(dāng)成是組件的作用域來使用。 前言 Context被翻譯為上下文,在編程領(lǐng)域,這是一個經(jīng)常會接觸到的概念,React中也有。 在React的官方文檔中,Context被歸類為高級部分(Advanced),屬于React的高級API,但官方...
閱讀 3257·2023-04-26 01:31
閱讀 1898·2023-04-25 22:08
閱讀 3444·2021-09-01 11:42
閱讀 2828·2019-08-30 12:58
閱讀 2170·2019-08-29 18:31
閱讀 2435·2019-08-29 17:18
閱讀 3068·2019-08-29 13:01
閱讀 2555·2019-08-28 18:22