2017-11-28 12 views
-1

바인딩 나는 다음과 같은 숨겨진 입력이 있습니다에서Vue.js - V 모델은 숨겨진 입력

<input id="myHiddenInput" 
    name="myHiddenInput" 
    type="hidden" 
    v-model="comment.myHiddenInput" 
    v-on:change="comment.myHiddenInput=$event.target.value"> 

var app = new Vue({ 
    el: '#app', 
    data: { 
    comment: {'myHiddenInput': ''} 
    } 
}) 

을 내 내가 숨겨진 값을 설정하고 다음과 같이 변경 이벤트를 트리거 자바 스크립트 fucntion :

var myFunction = function() { 

    $('#myHiddenInput').val(JSON.stringify(hiddentStuff)).trigger('change'); 

}; 

그러나 위의 방법은 작동하지 않습니다. 즉 양방향 바인딩이 작동하지 않습니다.

하지만이 작업을 수행 할 경우 작동 :

var myFunction = function() { 

    $('#myHiddenInput').val(JSON.stringify(hiddentStuff)).trigger('change'); 
    document.getElementById('myHiddenInput').dispatchEvent(new Event('change')); 

}; 

왜 그 자체로 충분하지 .trigger('change')이다, 왜 내가 dispatchEvent(new Event('change')) aswell를 호출해야합니까?

+0

jQuery는 자체 이벤트 시스템을 사용하므로 Vue는 DOM 이벤트와 함께 작동합니다. 그리고 마지막 질문에서 언급했듯이'app'를 사용하여 값을 직접 설정하는 것이 더 좋을 것입니다. https://codepen.io/Kradek/pen/pdxWzg?editors=1010 – Bert

답변

0

Vue와 함께 jquery를 사용하지 않는 것이 좋습니다.

this.comment.myHiddenInput = JSON.stringify(hiddentStuff); //Your new value here 

이 자동으로 입력을 업데이트하고 또한 변화를 트리거 :

시도는 바인더 제본 객체를 대신 VUE 방법을 변경합니다.