programing

vue 컨텍스트에서 getElementsByClassName

newsource 2022. 8. 8. 20:38

vue 컨텍스트에서 getElementsByClassName

vue.js의 경우 getElementsByClassName은 어떻게 작동합니까?

아래 코드 조각이 있습니다.목표는 버튼을 클릭하여 vue.js 메서드를 사용하여h1 태그의 색상을 녹색으로 변경하는 것입니다.

<html>
    <head>
        <script src="https://cdn.jsdelivr.net/npm/vue@2.5.17/dist/vue.js"></script>
    </head>
    <body>
    <div id="app">
        <h1 class="main-header">{{ message }}</h1>
        <button v-on:click="colorChange">Click me</button>
    </div>
    <script>
        var app = new Vue({
        el: '#app',
            data: {
                message: 'Hello Vue!'
            },
            methods: {
                colorChange: function() {
                    // what do I do here...?
                }
            }
        })
    </script>
    </body>
</html>

Vue는 가상 DOM을 사용하여 반응하는 것과 같으며 사용자가 직접 수정하지 않는 것으로 알고 있습니다.

물론 바닐라 JS에서는 그렇게 하죠document.getElementsByClassName('main-header')[0].style.backgroundColor="green";하지만 Vue에서는 직관에 어긋나는 것 같아요

제가 너무 복잡해서 실제로 이렇게 하는 건가요?아니면 Vue가 이 문제를 해결하는 방법을 가지고 있습니까?https://vuejs.org/v2/guide/class-and-style.html을 보고 있는데 수업 바인딩 방법만 나와 있어요.저도 https://vuejs.org/v2/guide/events.html을 통해 읽고 있습니다만, 어떤 식으로든 요소를 타겟으로 하는 것에 대해 필요한 것을 찾는 데 어려움을 겪고 있습니다.

Vue 컨텍스트에서 요소를 선택 및/또는 수정하려면 어떻게 해야 합니까?

정답입니다.Vue에서는 DOM과 직접 대화하는 것은 직관에 반합니다.

다행히 데이터 속성에 바인딩하여 스타일 변경을 직접 적용할 수 있는 지침이 있습니다(클래스에서도 비슷한 작업을 수행할 수 있습니다).

<h1 class="main-header" v-bind:style="{ color: activeColor}">{{ message }}</h1>
<button v-on:click="colorChange">Click me</button>

구성 요소에서 데이터 속성을 생성하고 버튼을 클릭하여 업데이트합니다.

data: {
    message: 'Hello Vue!',
    activeColor: 'red'
},
methods: {
    colorChange: function() {
        this.activeColor = 'green'
    }
}

언급URL : https://stackoverflow.com/questions/53176101/getelementsbyclassname-in-context-of-vue