• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    미해결

<template>과 <script> 간의 데이터 전달

23.09.08 13:22 작성 조회수 150

1

안녕하세요.

<template> 안에 <div v-for="(a, index) in aList" .... 라고 구현하고, 여기서 저는 v- for문 안에서 a가 변할 때마다 그것을 감지하여 <script>에서 함수를 구현하고 싶었습니다.

 

v-for안에서 aList를 돌면서 'a 변하기 -> 감지 -> script의 함수에서 로직 실행 -> 화면 출력' 를 반복하고 싶습니다.

input, select 형태가 아니라 화면을 출력하기 위한 v-for 문입니다.

 

제가 생각한 방법은

1) v-model이나 v-bind 사용 -> 적절하지 않은 것 같습니다

2) a를 script의 지역변수로 넣어서 해당 지역변수를 감지하기 -> 어떻게 하는지 방법을 모르겠습니다.

두 방법 모두 다 잘 되지 않아서 방법을 여쭤보고 싶습니다.

 

감사합니다!

 

답변 2

·

답변을 작성해보세요.

0

안녕하세요, v-for 문 안에 선언된 a 태그의 변화를 뷰에서 감지하시고 싶다는거죠? 해당 접근 방식은 유효하지 않은 방식입니다. a 태그의 어떤 속성(텍스트, attribtue)을 감지하시려고 하는진 모르겠으나 데이터 바인딩을 사용해서 뷰 데이터와 엮어보세요 :)

https://joshua1988.github.io/vue-camp/vue/template.html

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.09.10

안녕하세요, 인프런 AI 인턴이에요. <template> 안에서 <div v-for="(a, index) in aList">를 사용하고 a가 변할 때마다 <script>에서 해당 변화를 감지하여 함수를 실행하려고 하신다는 말씀이시죠?</p> <p>Vue.js에서 데이터의 변화를 감지하고 처리하기 위해서는 computed나 watch를 사용할 수 있습니다. computed는 데이터의 변화를 감지하여 계산된 값을 반환하거나 특정 로직을 수행할 수 있으며, watch는 데이터의 변화를 감지하여 원하는 동작을 수행할 수 있습니다.</p> <p>예를 들어, a가 변할 때마다 함수를 실행하고 싶다면 watch를 사용해볼 수 있습니다. 아래는 예시 코드입니다.</p> <pre><code class="language-javascript">&lt;script&gt; export default { data() { return { aList: [], }; }, watch: { a(newValue, oldValue) { // a의 값이 변할 때마다 실행될 로직 작성 console.log(&quot;a의 값이 변경되었습니다.&quot;, newValue); // 화면 출력을 위한 함수 호출 this.render(); }, }, methods: { render() { // 화면 출력을 위한 로직 작성 console.log(&quot;화면 출력을 위한 함수 호출&quot;); }, }, }; &lt;/script&gt; </code></pre> <p>위 코드에서 watch 객체 내에 a라는 watch 속성을 추가하였습니다. 이 속성은 a의 값이 변경될 때마다 실행될 로직을 작성하는 곳입니다. 필요에 따라 해당 함수 내부에서 화면 출력을 위한 함수(render)를 호출하면 됩니다.</p> <p>computed를 사용하는 방법도 있지만, computed는 데이터에 변화가 생겨야만 실행되기 때문에 watch가 더 적합해보입니다.</p> <p>이렇게 watch를 사용하여 <template>과 <script> 간의 데이터 변화를 감지하고 함수를 실행하고 화면 출력을 할 수 있습니다. 해당 방법을 참고해보시고 진행해보세요. 좋은 결과가 있길 바라요!</p></script></div></template>