반응형
VueJs 동적 v-on 이벤트가 가능합니까?
VueJ에서 다이내믹 온이벤트를 설정할 수 있습니까?저는 모든 것을 들을 수 있는 입력으로 동적 형태를 구성 요소로 구축하려고 합니다.다음은 예를 제시하겠습니다.
import Vue from 'vue';
let formItems = {
{type: 'checkbox', id: 'some-id', on:'change', model: 'someId'},
{type: 'url', id: 'another-id', on:'keyup', model:'anotherId'},
};
let params = {
someId: true,
anotherId: 'http://www.example.com',
};
new Vue({
el: '#app',
data: {
formItems: formItems,
params: params,
},
methods: {
checkInputParams(e) {
e.preventDefault();
// Do some stuff.
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.3.4/vue.js"></script>
<div id="app">
<div class="form-group" v-for="item in formItems">
<input type="checkbox" <!-- Also need a workaround for dynamic type and v-model -->
:id="item.id"
:class="(item.class ? item.class : '')"
:title="(item.title ? item.title : '')"
:placeholder="(item.placeholder ? item.placeholder : '')"
:autocomplete="(item.autocomplete ? item.autocomplete : false)"
:disabled="(item.disabled ? item.disabled : false)"
:max="(item.max ? item.max : '')"
:min="(item.min ? item.min : '')"
:maxlength="(item.maxLength ? item.maxLength : '')"
:multiple="(item.multiple ? item.multiple : '')"
:name="(item.name ? item.name : '')"
:readonly="(item.readonly ? item.readonly : false)"
:required="(item.required ? item.required : false)"
v-on="{{ item.on }}:checkInputParams" <!-- Here I try the dynamic v-on -->
v-model="params[item.model]"/>
</div>
</div>
동적 v-on 이벤트를 다음과 같이 설정할 수 있습니까?v-on="<variable>:<function>"?
Vue 2.4.0 이상부터v-on오브젝트 구문을 받아들입니다.
이 메뉴얼을 참조해 주세요.
<button v-on="{ mousedown: doThis, mouseup: doThat }"></button>
시험:
<button v-on="buttonListeners"></button>
// ...
{
data() {
return {
listeners: {
'mousedown': 'doThis',
},
};
},
computed: {
buttonListeners() {
return Object
.entries(this.listeners)
.reduce((acc, [eventName, methodName]) => ({
...acc,
[eventName]: this[methodName],
}), {});
},
},
};
언급URL : https://stackoverflow.com/questions/44776751/vuejs-dynamic-v-on-event-possible
반응형
'source' 카테고리의 다른 글
| 슬롯 Vue3에서 컴포넌트 텔레포트 (0) | 2022.08.15 |
|---|---|
| VeeValidate에서 오류 메시지(필드 이름)를 커스터마이즈하는 방법 (0) | 2022.08.15 |
| MPI를 사용하여 C에서 2D 배열 블록 전송 (0) | 2022.08.15 |
| JSF, Servlet 및 JSP의 차이점은 무엇입니까? (0) | 2022.08.15 |
| 단일 파일이 작동하지 않는 경우의 EsLint 비활성화 (0) | 2022.08.15 |