Vue.js 2.0 에서 select 직렬 드 롭 다운 상자 인 스 턴 스

인터넷 에서 Vuejs 2.0 동적 연결 select 를 검색 한 지 오래 되 었 지만 결과 가 나 오지 않 아 자신의 경험 을 정리 하기 로 결정 했다.select 가 Vue.js 2.0 버 전에 서 의 응용 과 관련 된 것 이다.먼저 제 가 사용 하 는 기술 을 말씀 드 리 겠 습 니 다.저 는 인터넷 에서 성숙 한 경험 을 참고 하여 Vue.js 2.0+Vue-router+Vuex 의 온 가족 통 을 선택 하 겠 습 니 다.
    select 는 먼저 단일 선택 과 다 중 선택 을 구분 해 야 합 니 다.v-model 은 select 단일 선택 과 다 중 선택 에 있어 차이 가 있 습 니 다.
    select 단일 선택 인 스 턴 스:

<select v-model="fruit">
 <option selected value="apple">  </option>
 <option value="banana">  </option>
 <option value="watermelon">  </option>
</select>
<span>Selected:{{ fruit }}</span>
    선택 한 option 에 value 속성 이 있 을 때 vm.selected 는 option 에 대응 하 는 value 값 입 니 다.그렇지 않 으 면 options 에 대응 하 는 text 값 입 니 다.
    select 다 중 선택 인 스 턴 스:

<select v-model="fruit" multiple>
 <option selected value="apple">  </option>
 <option value="banana">  </option>
 <option value="watermelon">  </option>
</select>
<span>Selected:{{ fruit | json }}</span>
다 중 선택 한 select 에 대해 선 택 된 값 은 배열 에 들 어 갑 니 다.물론 우리 의 실제 개발 에서 대부분 은 동적 select 의 상황 이기 때문에 다음은 동적 select 의 실례 를 분석 할 것 이다.
동적 선택
우 리 는 v-for,v-bind 명령 을 통 해 동적 으로 option 을 생 성 할 수 있 습 니 다.인 스 턴 스 는 다음 과 같 습 니 다.

<template>
 <div id="app">
 <select v-model="fruit" >
 <option v-for="option in options" v-bind:value="option.value">
  {{option.text}}
 </option>
 </select>
 <span>Selected:{{ fruit | json }}</span>
 </div>
</template> 
<script>
 new Vue({
  el: '#app',
  data: {
   fruit: 'apple',
   options: [
    { text: '  ', value: 'apple' },
    { text: '  ', value: 'banana' },
    { text: '  ', value: 'watermelon' }
   ]
  }
 });
</script>
   생 성 된 코드 구 조 는 다음 과 같 습 니 다.

<select>
 <option value="apple">  </option>
 <option value="banana">  </option>
 <option value="watermelon">  </option>
</select>
여기까지 기초 지식 을 다 정리 하고 건어물 을 만 들 기 시작 했다.저 는 직렬 select 를 쓸 때 두 가지 문 제 를 만 났 습 니 다.첫 번 째 select 선택 을 어떻게 해결 한 후에 관련 select 데 이 터 를 조회 하 느 냐 가 문제 입 니 다.문 제 는 내 가 데 이 터 를 수정 할 때 중급 연 결 된 select 데 이 터 를 어떻게 기본 으로 선택 하여 페이지 에 표시 하 느 냐 하 는 것 이다.이 두 가지 문 제 는 주로 두 번 째 문제 로 나 를 좀 괴 롭 혔 다.
첫 번 째 문제 의 해결 방안 은 첫 번 째 select 에서 선택 한 데 이 터 를 감청 하 는 것 입 니 다.데이터 가 바 뀌 면 두 번 째 관련 select 를 가 져 오 라 는 요청 을 합 니 다.실례 는 다음 과 같다.

<template>
 <div class="box-select-first">
 <select v-model.lazy="resCity">
 <option v-for="sc in scLists" v-bind:value="sc.areacode">{{sc.cityname}}</option>
 </select>
 </div>
 <div class="box-select-second">
 <select v-model="resArea">
 <option v-for="sa in saLists" v-bind:value="sa.id">{{sa.areaname}}</option>
 </select>
 </div>
 
</template>
<script>
 export default {
 data: function () {
 return {
 resCity: null,
 resArea: null
 }
 },
 created: function() {
 let vm = this;
 vm.getSelectLists(); //        
 },
 watch: {
 resCity: 'getSecondSelectLists' //             
 },
 methods: {
 getSelectLists: function() {},
 getSecondSelectLists: function(){}
 }
 }
 
</script>
두 번 째 문제 의 해결 방안 은 먼저 제 가 인 스 턴 스 를 만 든 후에 호출 되 었 습 니 다.먼저 도시 드 롭 다운 목록 을 성공 적 으로 얻 은 다음 에 상세 한 정 보 를 편집 하 는 데 이 터 를 얻 은 다음 에 연결 과 관련 된 관할 구역 목록 의 값 을 지연 시 키 는 것 입 니 다.사실은 생명 주기 내 에 도시 의 변 화 를 감청 한 후에 관할 구역 목록 데 이 터 를 먼저 가 져 오기 위해 서 입 니 다.이렇게 해야만 관할 구역 의 드 롭 다운 목록 을 연결 할 수 있 습 니 다.

<template>
 <div class="box-select-first">
 <select v-model.lazy="resCity">
 <option v-for="sc in scLists" v-bind:value="sc.areacode">{{sc.cityname}}</option>
 </select>
 </div>
 <div class="box-select-second">
 <select v-model="resArea">
 <option v-for="sa in saLists" v-bind:value="sa.id">{{sa.areaname}}</option>
 </select>
 </div>
 
</template>
<script>
 export default {
 data: function () {
 return {
 resCity: null,
 resArea: null
 }
 },
 created: function() {
 let vm = this;
 vm.getSelectLists();  //                  
 },
 watch: {
 resCity: 'getSecondSelectLists'  //       ,             
 },
 methods: {
 getSelectLists: function() {
 let vm = this;
 if(vm.$route.name == 'modif') { //              
  vm.getDetails(vm.$route.params.id); 
 }
 },
 getSecondSelectLists: function(){},
 getDetails:function(){
 setTimeout(function() {
  vm.resArea = data.id; //           ,           
  }, 300);
 }
 }
 }
</script>
요약:
     Vue.js 2.0 의 라 이 프 사이클 에서 select 의 직렬 드 롭 다운 데 이 터 를 연결 하려 면 먼저 데 이 터 를 불 러 와 야 연결 할 수 있 습 니 다.그렇지 않 으 면 레벨 드 롭 다운 값 을 성공 적 으로 귀속 할 수 없습니다.
참고 자료:
vue.js 홈 페이지
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 Vue.js 2.0 에서 select 급 연결 드 롭 다운 상자 의 인 스 턴 스 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기