1. 程式人生 > >vue實現動態多級聯動選擇

vue實現動態多級聯動選擇

Html

<div id="app">
  <select v-model="obj.selected" v-for="(obj,key) in selectedArr" @change="select">
    <option v-for="item in obj.optionArr" :value="item.value">{{item.text}}</option>
  </select>
  <p>selectedArr: {{ selectedArr }}</p>
</div>

Js

var vm = new Vue({
  el: '#app',
  data: {
    selectedArr: [{
      selected:'a0',
      optionArr:[
        { text: '10', value: 'a0' },
      	{ text: '20', value: 'b0' },
      	{ text: '30', value: 'c0' }]
    }]
  },
  methods: {
    //獲取當前選中層級
    getCurrentIndex:function(value){
        for(var i=0;i<this.selectedArr.length;i++){
            for(var j=0;j<this.selectedArr[i].optionArr.length;j++){
        	if(this.selectedArr[i].optionArr[j].value === value){
                return i
              }
      	    }
        }
    },
    //模擬新增下一級
    addSelected:function(index){
        this.selectedArr.push({
      	    selected:'a'+index,
      	    optionArr:[
        	{ text: '1'+index, value: 'a'+index },
      		{ text: '2'+index, value: 'b'+index },
      		{ text: '3'+index, value: 'c'+index }
            ]
    	})
    },
    //去除當前選中層級之後的級數
    removeSelected:function(index){
        if( index < this.selectedArr.length ){
            this.selectedArr.splice(index,this.selectedArr.length)
        }
    },
    select:function(e){
        var current = e.target.value;//獲取選中值
        var currentIndex = this.getCurrentIndex(current)+1;//獲取當前層級
        this.removeSelected(currentIndex);
        this.addSelected(currentIndex);
    }
  }
})

相關推薦

vue實現動態多級聯動選擇

Html<div id="app"> <select v-model="obj.selected" v-for="(obj,key) in selectedArr" @change="select"> <option v-for="i

小程式學習之旅---表單元件 picker picker-view 實現日期 區域 聯動選擇

Page({ /** * 頁面的初始資料 */ data: { cityList: ['北京', '上海', '深圳', '廣州'], cityIndex: 1, time: '17:01', date: '2018-6-28',

vue實現動態載入可收縮選單欄

引言 作為web前端開發,幾乎所有的web系統介面都會使用到選單欄,而大多數的左側選單欄都是可收縮的。接下來就一起學習下如何根據從後端獲取到的資料,動態的載入選單欄。 GitHub連結 Element-UI 我們可以使用element官網的官方demo作為基

Android仿蘋果實現省市區三級聯動選擇

效果圖:    一、新增依賴dependencies { ····· implementation 'liji.library.dev:citypickerview:0.7.0' } 二、這裡就不在介紹佈局檔案了,直接演示實現程式碼: package c

ionic-基於angularjs實現多級城市選擇元件

今天是2016年12月25日,也即是西方的聖誕節,本來是好日子,不過今天卻沒能放假,得調休補班。 最近身邊的朋友,夥計一起談論的最多的就是創業話題,今年是一個資本的寒冬年,但也是一個網際網路企業開始收

vue實現3級聯動

<el-col :span="4"> <el-form-item label="代理商"> <el-select v-model="formData

vue 實現省市區三級聯動

1. 省市區資料表 溫馨提示:該資料表未按 eslint 語法編寫,因此會報錯。事先將 eslint 關閉問題即可解決。 關閉方法: 找到 build>webpack.base.c

vue實現動態列表 點選 各行換色

只是模擬一練習 v-for  v-on  v-bind的一個簡單demo程式碼思路:遍歷出data裡面的資料 v-for給li加點選事件繫結class樣式  怎麼控制樣式的顯示  通過 class的控制  v:bind:class={class:index==變數}  下標和

Vue實現動態顯示textarea剩餘字數

原文地址:http://www.jb51.net/article/114382.htm Vue實現動態顯示textarea剩餘文字數量,具體內容如下 這裡我們假設允許使用者輸入的最多數量為200個  html程式碼如下: ? 1 2 <t

vue實現動態新增資料滾動條自動滾動到底部

在使用vue實現聊天頁面的時候,聊天資料動態加到頁面中,需要實現滾動條也自動滾動到底部。這時我找到網上有個外掛 vue-chat-scroll 但是安裝後發現是用不了的,報錯資訊如下: VM14383:27 [Vue warn]: Failed

基於Vue元件化的日期聯動選擇器功能的實現程式碼

我們的社群前端工程用的是element元件庫,後臺管理系統用的是iview,元件庫都很棒,但是日期、時間選擇器沒有那種“ 年份 - 月份 -天數 ” 聯動選擇的元件。雖然兩個元件庫給出的相關元件也很棒,但是有時候確實不是太好用,不太明白為什麼很多元件庫都拋棄了日期聯動選擇。因此考慮自己動手做一個。 將時間戳

JavaScript解析Json實現動態修改多級下拉選擇列表控制元件Select

最終效果: 根據上級選單所選,決定下級選單的列表項內容: 資料來源 首先讀取資料庫中的資料得到資料,由於資料庫中的資料是分散的幾個二維表格,查詢出來的資料是Map鍵值對的List集合,不能直

vue學習之mintui picker選擇實現省市二級聯動

程式碼如下: <!-- 頁面模版 --> <template> <div> <!--header--> <com-header :title="headerData.title" :toLi

Js 實現下拉款選擇多級聯動效果

  後臺js實現: self.StartTimeInfo = ko.observable();         self.EndTimeInfo = ko.observable();         self.ShiftNameList = ko.observableArr

多級聯動系列——ajax調用XML實現三級聯動

title div sdn 選擇器 class var () doc img ajax 使用起來特別的方便,再也不操心瀏覽器兼容問題了。用ajax調用XML頁面中的內容,來生成三級聯動,OK廢話不多說,跟著我一步步寫吧。 首先寫一個XML文件。data.xml <

vue監聽滾動事件 實現動態錨點

title 復制代碼 嘗試 理念 元素 滾動 功能 time 滿足 前幾天做項目的時候,需要實現一個動態錨點的效果 如果是傳統項目,這個效果就非常簡單。但是放到 Vue 中,就有兩大難題: 1. 在沒有 jQuery 的 animate() 方法的情況下,如何實現平滑滾動

vue實現一個會員卡的組件(可以動態傳入圖片(分出的一個組件)、背景、文字、卡號等)

less flow BE star efault client component ali adding 自己在寫這個組件的時候主要遇到的問題就是在動態傳入背景圖片或者背景色的時候沒能立馬順利寫出來,不過現在實現了這個簡單組件就和大家分享一下 <template&g

vue實現淘寶商品詳情頁屬性選擇功能

line pan func sel eth AD 圖片 [1] urn 方法一是自己想出來的,方法二來自忘記哪裏看到的了 不知道是不是你要的效果: 方法一:利用input[type="radio"] css代碼: 1 input { 2

element UI實現動態生成多級表頭

required enter nextTick ops () vue 技術 opd 循環 一、效果圖 二、封裝兩個組件,分別為DynamicTable.vue和TableColumn.vue,TableColumn.vue主要是使用遞歸來對表頭進行循環生成 Dynami

【前端框架-Vue-基礎】$attr及$listeners實現多級組件的通信

開發 發現 ttr 原因 temp com turn 三種 als 父子 A 組件與 B 組件之間的通信: (父子組件) 如上圖所示,A、B、C三個組件依次嵌套,按照 Vue 的開發習慣,父子組件通信可以通過以下方式實現: A to B 通過props的方式向子組件傳遞,B