vue에서 @click으로 여러 함수를 호출하는 방법은 무엇입니까?
질문:
한 번의 @click에서 여러 함수를 호출하는 방법은 무엇입니까? (일명 v-on:click
)?
나는 시도했다
세미콜론으로 함수 분할 :
<div @click="fn1('foo');fn2('bar')"> </div>
;여러 가지 사용
@click
:<div @click="fn1('foo')" @click="fn2('bar')"> </div>
;
하지만 제대로하는 방법?
추신 : 확실히 나는 항상 할 수 있습니다
<div v-on:click="fn3('foo', 'bar')"> </div>
function fn3 (args) {
fn1(args);
fn2(args);
}
그러나 때로는 이것은 좋지 않습니다.
우선 가독성을 위해 @click
대신 짧은 표기법을 사용할 수 있습니다 v-on:click
.
둘째, 위의 주석에서 언급 한 @Tushar와 같이 다른 함수 / 메소드를 호출하는 클릭 이벤트 핸들러를 사용할 수 있으므로 다음과 같은 결과를 얻을 수 있습니다.
<div id="app">
<div @click="handler('foo','bar')">
Hi, click me!
</div>
</div>
<!-- link to vue.js !-->
<script src="vue.js"></script>
<script>
(function(){
var vm = new Vue({
el:'#app',
methods:{
method1:function(arg){
console.log('method1: ',arg);
},
method2:function(arg){
console.log('method2: ',arg);
},
handler:function(arg1,arg2){
this.method1(arg1);
this.method2(arg2);
}
}
})
}());
</script>
저는 Vue 2.3을 사용 중이며 다음과 같이 할 수 있습니다.
<div v-on:click="firstFunction(); secondFunction();"></div>
anomymous 함수를 추가하려면 대안이 될 수 있습니다.
<div v-on:click="return function() { fn1('foo');fn2('bar'); }()"> </div>
조각으로 분리하십시오.
인라인 :
<div @click="f1() + f2()"></div>
OR : 복합 함수를 통해 :
<div @click="f3()"></div>
<script>
var app = new Vue({
// ...
methods: {
f3: function() { f1() + f2(); }
f1: function() {},
f2: function() {}
}
})
</script>
This simple way to do v-on:click="firstFunction(); secondFunction();"
This works for me when you need to open another dialog box by clicking a button inside a dialogue box and also close this one. Pass the values as params with a comma separator.
<v-btn absolute fab small slot="activator" top right color="primary" @click="(addTime = true),(ticketExpenseList = false)"><v-icon>add</v-icon></v-btn>
in Vue 2.5.1 for button works
<button @click="firstFunction(); secondFunction();">Ok</button>
The Vue
event handling only allows for single function calls. If you need to do multiple ones you can either do a wrapper that includes both:
<div @click="handler"></div>
////////////////////////////
handler: function() { //Syntax assuming its in the 'methods' option of Vue instance
fn1('foo');
fn2('bar');
}
EDIT
Another option is to edit the first handler to have a callback and pass the second in.
<div @click="fn1('foo', fn2)"></div>
////////////////////////////////////
fn1: function(value, callback) {
console.log(value);
callback('bar');
},
fn2: function(value) {
console.log(value);
}
Html:
<div id="example">
<button v-on:click="multiple">Multiple</button>
</div>
JS:
var vm = new Vue({
el: '#example',
data: {
name: 'Vue.js'
},
// define methods under the `methods` object
methods: {
multiple: function (event) {
this.first()
this.second()
}
first: function (event) {
//yourstuff
}
second: function (event) {
//yourstuff
}
}
})
vm.multiple()
you can, however, do something like this :
<div onclick="return function()
{console.log('yaay, another onclick event!')}()"
@click="defaultFunction"></div>
yes, by using native onclick html event.
참고URL : https://stackoverflow.com/questions/38744932/how-to-call-multiple-functions-with-click-in-vue
'code' 카테고리의 다른 글
Python AttributeError : '모듈'개체에 'SSL_ST_INIT'속성이 없습니다. (0) | 2020.11.09 |
---|---|
간단한 ng-include가 작동하지 않습니다. (0) | 2020.11.09 |
jQuery Div로 스크롤 (0) | 2020.11.09 |
Android 대화 상자의 중앙 메시지 (0) | 2020.11.09 |
Cocoa-Touch : 두 개의 NSDates가 같은 날에 있는지 어떻게 알 수 있습니까? (0) | 2020.11.09 |