成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

使用render實(shí)現(xiàn)v-model與多個(gè)slot分發(fā)

LeexMuller / 3167人閱讀

摘要:使用函數(shù)實(shí)現(xiàn)表格與表單之間的雙向綁定以及表格中使用分發(fā)多個(gè),分發(fā)不同的內(nèi)容。主要思路通過給表單組件的進(jìn)行賦值,之后通過等元素監(jiān)聽事件,進(jìn)行取值,然后通過表格當(dāng)前行索引對(duì)表格相應(yīng)元素進(jìn)行賦值。

使用render函數(shù)實(shí)現(xiàn)表格與form表單之間的雙向綁定以及表格中使用slot分發(fā)(多個(gè)slot,分發(fā)不同的內(nèi)容)。

主要思路

通過props給表單組件的value進(jìn)行賦值,之后通過change、blur等元素監(jiān)聽事件,進(jìn)行取值,然后通過表格當(dāng)前行索引對(duì)表格相應(yīng)元素進(jìn)行賦值。這樣就完成了一個(gè)數(shù)據(jù)的雙向綁定了。

我這邊使用的是ivewUI組件庫
 
 
在表格中對(duì)一個(gè)input實(shí)現(xiàn)雙向綁定
{
  title: "姓名",
  key: "name",
  render: (h, params) => {
    let self = this;
    return h("div", [
      h("Input", {
        props: {
          placeholder: "請(qǐng)輸入....",
          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"
        }
      },"請(qǐng)輸入你的名字....")
    ]);
  }
}
在表格中對(duì)一個(gè)select實(shí)現(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)
      })
    )
  }
}
在表格中對(duì)一個(gè)switch實(shí)現(xiàn)雙向綁定,外加slot
{
  title: "switch開關(guān)slot實(shí)現(xiàn)",
  key: "switchSlot", 
  renderHeader(h, params) {
    return h("Tooltip", {
      props: {
        placement: "right",
        content: "switch開關(guān)"
      }
    },"switch開關(guān)slot實(shí)現(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;
        }
      }
    // 這樣我們就可以在表格中完美的實(shí)現(xiàn)多個(gè)slot分發(fā)了
    },switchList.map(item => {
      return h("span",{
        slot:item.slot
      },item.name)
    }))
  }
}
注意

對(duì)表格數(shù)據(jù)進(jìn)行雙向綁定時(shí),不建議直接更改源數(shù)據(jù)源,可以copy出一份臨時(shí)數(shù)據(jù)源,在做相應(yīng)修改操作時(shí)對(duì)臨時(shí)數(shù)據(jù)源進(jìn)行更改,這樣可以大大減少對(duì)dom的渲染,在需要的時(shí)候再將臨時(shí)數(shù)據(jù)源提交到主數(shù)據(jù)源就可以了。

結(jié)尾

如果覺得render寫起來很煩的話,可以使用jsx,會(huì)大大減少代碼量0.0
源碼地址

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/94565.html

相關(guān)文章

  • Vue.js-組件詳解

    摘要:事件總線事件總線首先創(chuàng)建了一個(gè)名為的空的實(shí)例然后全局定義了組件最后創(chuàng)建了實(shí)例。在父組件模板中,子組件標(biāo)簽上使用指定一個(gè)名稱,并在父組件內(nèi)通過來訪問指定名稱的子組件。 學(xué)習(xí)筆記:組件詳解 組件詳解 組件與復(fù)用 Vue組件需要注冊(cè)后才可以使用。注冊(cè)有全局注冊(cè)和局部注冊(cè)兩種方式。 全局注冊(cè) Vue.component(my-component, {}); 要在父實(shí)例中使用這個(gè)組件,必須要...

    jeffrey_up 評(píng)論0 收藏0
  • Vue-組件詳解

    摘要:除了監(jiān)聽事件外,還可以用于組件之間的自定義事件。它僅僅作為一個(gè)直接訪問子組件的應(yīng)急方案,應(yīng)當(dāng)避免在模板或計(jì)算屬性中使用。將和合并成,會(huì)自動(dòng)去判斷是普通標(biāo)簽還是組件。子組件這里的狀態(tài)綁定的是父組件的數(shù)據(jù)。 查看原文站點(diǎn),更多擴(kuò)展內(nèi)容及更佳閱讀體驗(yàn)! 組件詳解 組件與復(fù)用 Vue組件需要注冊(cè)后才可以使用。注冊(cè)有全局注冊(cè)和局部注冊(cè)兩種方式。 全局注冊(cè) Vue.component(my-com...

    dadong 評(píng)論0 收藏0
  • 封裝Vue組件的一些技巧

    摘要:根據(jù)組件單向數(shù)據(jù)流和和事件通信機(jī)制,需要由子組件通過事件通知父組件,并在父組件中修改原始的數(shù)據(jù),完成狀態(tài)的更新。 本文同步在個(gè)人博客shymean.com上,歡迎關(guān)注 寫Vue有很長一段時(shí)間了,除了常規(guī)的業(yè)務(wù)開發(fā)之外,也應(yīng)該思考和反思一下封裝組件的正確方式。以彈窗組件為例,一種實(shí)現(xiàn)是在需要模板中引入需要彈窗展示的組件,然后通過一個(gè)flag變量來控制彈窗的組件,在業(yè)務(wù)代碼里面會(huì)充斥著冗余的彈...

    韓冰 評(píng)論0 收藏0
  • Vue.js Guide Essentials-說人話-速記版

    摘要:以下內(nèi)容根據(jù)部分速記。同時(shí),需要在父組件標(biāo)簽中添加這個(gè)屬性,該屬性才能傳遞到子組件內(nèi)。把父組件傳遞的數(shù)據(jù)當(dāng)做子組件的初始值。 以下內(nèi)容根據(jù)Vue.js Guide Essentials部分速記。 不含動(dòng)畫/mixin/SSR/路由/狀態(tài)管理等部分. Introduction 建議閱讀原文 https://vuejs.org/v2/guide/in... 什么是Vue 開始 聲明式...

    Sanchi 評(píng)論0 收藏0
  • 聊一聊我對(duì) React Context 的理解以及應(yīng)用

    摘要:假如以的作用域鏈作為類比,組件提供的對(duì)象其實(shí)就好比一個(gè)提供給子組件訪問的作用域,而對(duì)象的屬性可以看成作用域上的活動(dòng)對(duì)象。所以,我借鑒了作用域鏈的思路,把當(dāng)成是組件的作用域來使用。 前言 Context被翻譯為上下文,在編程領(lǐng)域,這是一個(gè)經(jīng)常會(huì)接觸到的概念,React中也有。 在React的官方文檔中,Context被歸類為高級(jí)部分(Advanced),屬于React的高級(jí)API,但官方...

    chengjianhua 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

LeexMuller

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<