element-ui 탄창 구성 요소를 봉인하려면
3779 단어 element-ui탄창구성 요소봉인하다
el-dialog를 하나의 구성 요소로 봉인
우리가 element-ui를 사용할 때, 만약 한 탄창의 내용이 매우 많다면, 우리는 자주 이 탄창을 하나의 구성 요소로 봉인할 것이다. 다음과 같다.
<!-- DetailDialog.vue html -->
<template>
<el-dialog title=" " :visible.sync="visible" width="720px" >
<p> </p>
</el-dialog>
</template>
// DetailDialog.vue js
<script>
props: {
visible: {
type: Boolean,
default: false
}
}
</script>
el-dialog는 props를 수정하고 오류를 보고합니다.
그러나 이렇게 하면 문제가 생길 수 있습니다. 만약el-dialog 내부의 닫힌 이벤트를 촉발했을 때, 예를 들어 탄창 음영 등을 클릭하면 현재 구성 요소의props[visible]를 수정할 수 없습니다. 구성 요소가 prop 속성을 직접 수정할 수 없기 때문에 오류가 발생합니다.
props [visible]의 수정과 가져오기를 차단하기 위해 중간 변수 innerVisible를 추가했습니다.
<!-- DetailDialog.vue html -->
<template>
<el-dialog title=" " :visible.sync="innerVisible" width="720px" >
<p> </p>
</el-dialog>
</template>
// DetailDialog.vue js
<script>
export default {
props: {
visible: {
type: Boolean,
default: false
}
},
computed: {
innerVisible: {
get: function() {
return this.visible
},
set: function(val) {
this.$emit('update:visible', val)
}
}
}
}
</script>
이렇게 하면el-dialog 내부에서prop[visible]를 수정할 때 우리는emit('update:') 방식으로 부모 구성 요소를 통지하여props를 직접 수정하지 않도록 합니다.물론 부모 구성 요소를 추가해야 합니다sync 수식자 수정을 수락합니다.
<!-- father.vue html -->
<DetailDialog :visible.sync="detailVisible" />
지금까지 봉인된 탄창 부품은 이미 문제가 없다.계속 최적화, v-model 제어로 숨기기
// DetailDialog.vue js
<script>
export default {
model: {
prop: 'visible', // v-model props
event: 'toggle' // v-model
},
props: {
visible: {
type: Boolean,
default: false
}
},
computed: {
innerVisible: {
get: function() {
return this.visible
},
set: function(val) {
this.$emit('update:toggle', val)
}
}
}
}
</script>
v-model에 접속하여 사용하면 더욱 높고 깔끔하다
<!-- father.vue html -->
<DetailDialog v-model="detailVisible" />
계속 최적화,mixins로 봉인
빈번하게 탄창 구성 요소를 봉인할 때 상술한 논리도 끊임없이 복제해야 하기 때문에 계속 최적화하고 상술한 제어 디스플레이의 숨겨진 논리를 mxins로 봉인하여 직접 복용하면 된다
// vModelDialog.js
export default {
model: {
prop: 'visible',
event: 'toggle'
},
props: {
visible: {
type: Boolean,
default: () => {
return false
}
}
},
computed: {
innerVisible: {
get: function() {
return this.visible
},
set: function(val) {
this.$emit('toggle', val)
}
}
}
}
그러면 탄창 플러그인을 봉인할 때mixins를 도입하면 숨겨진 논리를 표시할 수 있습니다.
// DetailDialog.vue js
<script>
import vModelDialog from './vModelDialog.js'
export default {
mixins: [vModelDialog],
}
</script>
이상은element-ui 창문 구성 요소 봉인 절차의 상세한 내용입니다. 더 많은 element-ui 창문 구성 요소 봉인에 관한 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
element-ui 대화상자 기반el-dialog 초기화 검사 문제 해결페이지를 새로 고치지 않고 el-dialog를 다시 열 때, rules나 어떤 값을 연결하려면required가 필요합니다. 자동으로 검사됩니다. 여러 개의 블로그를 살펴본 결과, 자주 사용하는 두 가지 해결 방법이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.