国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【sgLazyCascader】自定義組件:基于el-cascader的懶加載級(jí)聯(lián)菜單,支持異步加載子級(jí)菜單

這篇具有很好參考價(jià)值的文章主要介紹了【sgLazyCascader】自定義組件:基于el-cascader的懶加載級(jí)聯(lián)菜單,支持異步加載子級(jí)菜單。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

【sgLazyCascader】自定義組件:基于el-cascader的懶加載級(jí)聯(lián)菜單,支持異步加載子級(jí)菜單,Vue.js,vue.js,elementui,javascript

sgLazyCascader源碼

<template>
  <el-cascader
    :class="$options.name"
    style="width: 100%"
    :props="props"
    v-model="model"
    :placeholder="placeholder || '請選擇'"
    :clearable="clearable === '' || clearable"
    @change="change"
    @expand-change="expandChange"
    @blur="blur"
    @focus="focus"
    @visible-change="visibleChange"
    @remove-tag="removeTag"
  ></el-cascader>
</template>
<script>
export default {
  name: "sgLazyCascader",
  data() {
    return {
      model: null,
      mainKey: "id", //默認(rèn)主鍵
      defaultRootId: "root", //默認(rèn)根節(jié)點(diǎn)ID就是root
      form: {},
      props: {
        lazy: true,
        expandTrigger: "hover",
        multiple: false,
        checkStrictly: this.checkStrictly === "" || this.checkStrictly, //是否支持選中非葉子節(jié)點(diǎn)(是否嚴(yán)格的遵守父子節(jié)點(diǎn)不互相關(guān)聯(lián)	)
        lazyLoad: (node, resolve) => {
          this.loadNodeData(
            node.level === 0 ? { [this.mainKey]: this.defaultRootId } : node.data,
            (d) => resolve(d)
          );
        },
      },
    };
  },
  props: [
    "value",
    "oldValue", //回顯上次的數(shù)據(jù)(當(dāng)級(jí)聯(lián)菜單數(shù)據(jù)是懶加載模式的時(shí)候使用,這里是顯示值不是實(shí)際ID,提供給用戶觀察的值)
    "data",
    "placeholder",
    "clearable",
    "checkStrictly", //是否允許選中非葉子節(jié)點(diǎn)
  ],
  watch: {
    value: {
      handler(d) {
        this.model = d;
      },
      deep: true,
      immediate: true,
    },
    model(d) {
      this.$emit("input", d);
    },
    data: {
      handler(d) {
        d.nodeKey && (this.mainKey = d.nodeKey); //主鍵
        d.rootId && (this.defaultRootId = d.rootId); //根節(jié)點(diǎn)ID
        d.value && (this.props.value = d.value); //指定選項(xiàng)的值為選項(xiàng)對象的某個(gè)屬性值
        d.label && (this.props.label = d.label); //指定選項(xiàng)標(biāo)簽為選項(xiàng)對象的某個(gè)屬性值
        d.children && (this.props.children = d.children); //指定選項(xiàng)的子選項(xiàng)為選項(xiàng)對象的某個(gè)屬性值
        d.expandTrigger && (this.props.expandTrigger = d.expandTrigger); //次級(jí)菜單的展開方式click / hover
        d.hasOwnProperty("multiple") && (this.props.multiple = d.multiple); //是否多選
        d.hasOwnProperty("lazy") && (this.props.lazy = d.lazy); //是否動(dòng)態(tài)加載子節(jié)點(diǎn),需與 lazyLoad 方法結(jié)合使用
      },
      deep: true,
      immediate: true,
    },
    oldValue(d) {
      this.showOldValue(d);
    },
  },
  mounted() {
    this.oldValue && this.showOldValue(this.oldValue);
  },
  methods: {
    // 回顯級(jí)聯(lián)菜單上次的數(shù)據(jù)
    showOldValue(d) {
      let input = this.$el.querySelector(`input`);
      input && (input.value = d);
    },
    // 加載節(jié)點(diǎn)數(shù)據(jù)(通過接口向后臺(tái)獲取數(shù)據(jù))
    loadNodeData(data, cb) {
      let resolve = (d) => {
        cb && cb(d);
      };
      this.$emit(`loadNode`, { data, resolve });
    },
    // 當(dāng)選中節(jié)點(diǎn)變化時(shí)觸發(fā)	[回調(diào)參數(shù)]選中節(jié)點(diǎn)的值
    change(d) {
      this.$emit(`change`, d);
    },
    // 當(dāng)展開節(jié)點(diǎn)發(fā)生變化時(shí)觸發(fā)	[回調(diào)參數(shù)]各父級(jí)選項(xiàng)值組成的數(shù)組
    expandChange(d) {
      this.$emit(`expandChange`, d);
    },
    // 	當(dāng)失去焦點(diǎn)時(shí)觸發(fā)	[回調(diào)參數(shù)](event: Event)
    blur(d) {
      this.$emit(`blur`, d);
    },
    // 當(dāng)獲得焦點(diǎn)時(shí)觸發(fā)	[回調(diào)參數(shù)](event: Event)
    focus(d) {
      this.$emit(`focus`, d);
    },
    // 下拉框出現(xiàn)/隱藏時(shí)觸發(fā)	[回調(diào)參數(shù)]出現(xiàn)則為 true,隱藏則為 false
    visibleChange(d) {
      this.$emit(`visibleChange`, d);
    },
    // 在多選模式下,移除Tag時(shí)觸發(fā)	[回調(diào)參數(shù)]移除的Tag對應(yīng)的節(jié)點(diǎn)的值
    removeTag(d) {
      this.$emit(`removeTag`, d);
    },
  },
};
</script>

用例

<template>
  <div :class="$options.name">
    <sgLazyCascader
      :oldValue="sgLazyCascader_oldValue"
      v-model="value"
      :data="{
        nodeKey: `ID`, //主鍵
        value: `ID`,
        label: 'MC',
      }"
      placeholder="請選擇"
      @loadNode="loadNode"
    />
  </div>
</template>

<script>
import sgLazyCascader from "@/vue/components/admin/sgLazyCascader";
export default {
  components: {
    sgLazyCascader,
  },
  data() {
    return {
      sgLazyCascader_oldValue: null,
      value: [],
    };
  },
  methods: {
    // 加載節(jié)點(diǎn)數(shù)據(jù)
    loadNode({ data, resolve }) {
      this.$d.column_queryByPid({
        data: { PID: data.ID },
        doing: { s: (d) => resolve(d) },
      });
    },
    // 回顯級(jí)聯(lián)菜單上次的數(shù)據(jù)
    initSgLazyCascadeOldValue(d) {
      this.sgLazyCascader_oldValue = "回顯信息1 / 回顯信息2";
    },
  },
};
</script>

文章來源地址http://www.zghlxwxcb.cn/news/detail-702714.html

到了這里,關(guān)于【sgLazyCascader】自定義組件:基于el-cascader的懶加載級(jí)聯(lián)菜單,支持異步加載子級(jí)菜單的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • el-cascader級(jí)聯(lián)選擇器那些事

    el-cascader級(jí)聯(lián)選擇器那些事

    vue3+element-plus+ts 使用cascader組件提供的getCheckedNodes()

    2024年02月16日
    瀏覽(24)
  • 更改el-cascade默認(rèn)的value和label的鍵值

    更改el-cascade默認(rèn)的value和label的鍵值

    ? 后端返回的樹結(jié)構(gòu)中,label的key不是el-cascade默認(rèn)的label,我需要改成對應(yīng)的字段,但是一直沒有成功,我也在文檔中找到了說明,但是我沒注意這是在props中改,導(dǎo)致一直不成功 這是我一開始錯(cuò)誤的寫法: 這是正確的寫法:?

    2024年04月17日
    瀏覽(27)
  • vue+element UI 使用el-cascader實(shí)現(xiàn)全選功能

    vue+element UI 使用el-cascader實(shí)現(xiàn)全選功能

    實(shí)現(xiàn)效果圖 ? ? 使用el-cascader代碼片段 js代碼 data數(shù)據(jù)設(shè)置: // 這里是處理成自己需要的數(shù)據(jù)格式, 需要把全選的這一選項(xiàng)過濾掉 // 原始選擇的數(shù)據(jù)格式 [[\\\'全選\\\'], [1, 2], [1, 3], [1, 4],[5, 6], [5, 7, 8],5, 7, 9],[10]] //因?yàn)槲易约盒枰臄?shù)據(jù)是“2,3,4,5”的格式,做了以下處理 注:本文是

    2024年02月12日
    瀏覽(28)
  • element ui 層級(jí)選擇器el-cascader只能選最后一級(jí)多選

    element ui 層級(jí)選擇器el-cascader只能選最后一級(jí)多選

    在element ui 中el-cascader多選: 每個(gè)層級(jí)都可以選擇,但并不是我需要的,我需要多選只能選最后一級(jí),在網(wǎng)上找了很久都復(fù)雜的,最終自己選擇用css樣式對checkbox進(jìn)行隱藏。 實(shí)現(xiàn)方法: 在css 中加入 關(guān)鍵點(diǎn)在于利用屬性選擇器,遇到屬性是 aria-haspopup (表示點(diǎn)擊的時(shí)候是否會(huì)

    2024年02月11日
    瀏覽(20)
  • [element-ui] 級(jí)聯(lián)選擇器el-cascader不觸發(fā)change事件

    [element-ui] 級(jí)聯(lián)選擇器el-cascader不觸發(fā)change事件

    el-cascader 使用官網(wǎng)的數(shù)據(jù)是可以的 官網(wǎng)數(shù)據(jù)中最后一級(jí)沒有children 就可以了 參考: elementui級(jí)聯(lián)選擇器Cascader不觸發(fā)change事件

    2024年01月23日
    瀏覽(26)
  • ElementPlus el-cascader級(jí)聯(lián)選擇器 實(shí)現(xiàn)一級(jí)菜單單選,二級(jí)菜單多選

    ElementPlus el-cascader級(jí)聯(lián)選擇器 實(shí)現(xiàn)一級(jí)菜單單選,二級(jí)菜單多選

    需求: 利用el-cascader級(jí)聯(lián)實(shí)現(xiàn)一級(jí)菜單單選,二級(jí)菜單多選的功能,如下圖所示: 思路: 使用了多選multiply屬性,這個(gè)屬性下,選中的數(shù)據(jù)結(jié)構(gòu)為:一級(jí)為length1的數(shù)組,二級(jí)為length2的數(shù)組。利用標(biāo)識(shí)符,把最后選中的一級(jí)菜單的值與標(biāo)識(shí)符做對比,如不同,則讓標(biāo)識(shí)符的值

    2024年02月11日
    瀏覽(29)
  • element-ui el-cascader級(jí)聯(lián)選擇器設(shè)置指定層級(jí)不能選中(示例代碼)

    本文為轉(zhuǎn)載原地址:https://www.136.la/shida/show-396330.html 有時(shí)候用element-ui el-cascader級(jí)聯(lián)選擇器添加分類時(shí)會(huì)遇到最多添加幾級(jí)的限定.看了文檔,只要給需要禁止選擇的選項(xiàng)添加disabled屬性就可以.但是使用一層一層循環(huán)遍歷數(shù)據(jù)感覺很麻煩,自己寫了個(gè)遍歷的方法,紀(jì)錄下,方便以后使

    2024年02月11日
    瀏覽(26)
  • vue element UI el-cascader 級(jí)聯(lián)選擇器 獲取當(dāng)前選擇值的整個(gè)對象

    vue element UI el-cascader 級(jí)聯(lián)選擇器 獲取當(dāng)前選擇值的整個(gè)對象

    要使用到cascader組件選中的數(shù)據(jù)的所有部分,并沒有類似于select組件中的value可以指定,查看官方文檔提供了新的方法,官方地址https://element.eleme.cn/#/zh-CN/component/cascader html部分 可以正常獲取到該節(jié)點(diǎn)的全部數(shù)據(jù),如下圖所示: 如有問題請聯(lián)系我~ 歡迎加入QQ群:

    2024年02月15日
    瀏覽(28)
  • el-cascader級(jí)聯(lián)選擇器加載遠(yuǎn)程數(shù)據(jù)、默認(rèn)開始加載固定條、可以根據(jù)搜索加載遠(yuǎn)程數(shù)據(jù)。

    el-cascader級(jí)聯(lián)選擇器加載遠(yuǎn)程數(shù)據(jù)、默認(rèn)開始加載固定條、可以根據(jù)搜索加載遠(yuǎn)程數(shù)據(jù)。

    加載用戶列表分頁請求、默認(rèn)請求20條數(shù)據(jù)。想添加遠(yuǎn)程搜索用戶功能。原有的方法 filter-method 不能監(jiān)聽到輸入清空數(shù)據(jù)的時(shí)候。這樣搜索完無法返回默認(rèn)的20條數(shù)據(jù)。 直接監(jiān)聽級(jí)聯(lián)選擇的 v-model 綁定的值是無法檢測到用戶自己輸入的。 解決思路: el-cascader 沒有提供監(jiān)聽用戶

    2024年02月14日
    瀏覽(17)
  • Vue+element-ui的el-cascader實(shí)現(xiàn)動(dòng)態(tài)添加刪除級(jí)聯(lián)地點(diǎn)輸入框

    實(shí)現(xiàn)省市區(qū)三級(jí)地點(diǎn)級(jí)聯(lián)選擇,可聯(lián)想; 包括始發(fā)地點(diǎn)、途徑地點(diǎn)、終止地點(diǎn),始發(fā)地點(diǎn)、終止地點(diǎn)均為一個(gè),途徑地點(diǎn)可以沒有也可以是多個(gè); 用戶可以動(dòng)態(tài)添加/刪除途徑地點(diǎn)。 使用級(jí)聯(lián)選擇器Cascader需要的樹形數(shù)據(jù),前端請求到后端獲取省市區(qū)數(shù)據(jù)并處理為elementui官網(wǎng)

    2024年02月04日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包