작성
·
548
1
선생님 안녕하세요.
제가 진행한 부분은 root 컴포넌트에 데이터를 event발생하여 전달하는 부분까지 진행했습니다.
app-content에서는 num = 10이 잘 등록되었는데,
버튼 이벤트를 발생할 때는 root 컴포넌트에는 undefined로 인식하여 이 값을 대입하는 현상이 있습니다.
오타도 안 난 듯 한데.. 어디서 문제인지 갑이 잡히지 않습니다. ㅠㅠ
에러 : Property or method is not defined on the instance but referenced during render
소스 :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Vue 외부 스크립트 호출 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<title>Document</title>
</head>
<body>
<div id="app">
<app-header></app-header>
<app-content v-on:pass="resultNum(value)"></app-content>
</div>
<script>
Vue.config.devtools = true; // 개발도구 사용여부(이건 제가 별도로 찾아서 적용했습니다.)
var appHeader = {
template: '<div>header</div>'
};
var appContent = {
// passNum 이라는 버튼을 클릭했을 때 appHeader로 데이터를 전달하는 방법
// → Root 컴포넌트로 event 발생시키고 appHeader로 props 전달한다.
// 이때 Root 컴포넌트에서 하위 컴포넌트로 props를 실행하려면 데이터를 선언해야 한다.
template: '<div>content'
+ '<button v-on:click="passNum">header로 전달</button>'
+ '</div>',
methods: {
passNum: function() {
this.$emit('pass', 10);
}
}
};
// root 컴포넌트
new Vue({
el: '#app',
components: {
'app-header': appHeader,
'app-content': appContent
},
data: {
num: 0
},
methods: {
resultNum: function(value) { // num 받기
this.num = value;
}
}
});
</script>
</body>
</html>
답변 5
0
템플릿 표현식에 메서드를 연결하는 부분에서 많은 분들이 헷갈려 하시는 것 같네요. 강의에서 안내해 드린대로 메서드 이름을 연결하셔야 합니다. 그렇지 않고 템플릿 표현식에서 resultNum(value) 과 같은 형태로 선언하시게 되면 템플릿 표현식에서 정의된 value
값을 찾게 됩니다.
자세한 내용은 아래 문서 참고하세요.
https://vuejs.org/guide/essentials/event-handling.html#calling-methods-in-inline-handlers
해당 내용은 다음 후속 강의에서 추가로 설명해 두겠습니다 :)
0
안녕하세요. vue 입문자입니다. 이쪽에 관심이 있어서 수강을 하고있어
같은 학생으로써 저도 궁금해서 글 등록해보았습니다.
<app-content v-on:pass="resultNum(10)"></app-content>
맨 위쪽 태그부분에 value 인자 를 10 이라는 숫자로 바꾸니 오류는 없는거같은데,
이렇게 하면 공부하시는 부분에 관해 의도된 실습내용과 거리가 멀어진걸까요?..
자세한 내용은 저도 잘 모르겠네요..
0
안녕하세요 꾸릉님, 질문을 자세히 적어주셔서 감사합니다 :) 코드를 보면 뷰 인스턴스 컴포넌트(루트 컴포넌트)의 데이터 속성 num의 기본 값이 0이고 아래 app-content 컴포넌트에서 이벤트가 발생되면 num의 값이 0에서 10으로 변환되어야 할 것 같아요.
Property or method is not defined on the instance but referenced during render
위 에러 메시지는 템플릿 표현식에서 정의되지 않은 데이터 속성이나 메서드가 선언되어 있으면 표시됩니다. 첨부해 주신 코드 상으로는 크게 문제가 없어 보이는데 여전히 문제 현상이 발생하시나요? :)
감사합니다... 계속 이문제 해결이 안돼서... 근데 인자값을 적으면 안되는이유 혹시 아시나요?