반응형
Vue Uncaught TypeError: fn.bind가 함수가 아닙니다.
내 App.vue는 다음과 같습니다.
<template>
<div id="app">
<home-central></home-central>
</div>
</template>
<script>
import HomeCentral from './components/HomeCentral';
export default {
name: 'App',
components: {
HomeCentral,
},
};
</script>
<style>
#app {
font-family: "Avenir", Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
src/components/HomeCentral에 다음 코드가 있습니다.표시하다
<template>
<div class="homecentral">
<input type="text" v-model="title"><br/>
<h1>{{title}}</h1>
<p v-if="showName">{{user.first_name}}</p>
<p v-else>Nobody</p>
<ul>
<li v-for="item in items" :key="item.id">{{item.title}}</li>it
</ul>
<button v-on:click="greet('Hello World')">Say Greeting</button>
<br/>
<input type="text" v-on:keyup="pressKey" v-on:keyup.enter="enterHit">
<label>First Name: </label><input type="text" v-model="user.firstName">
<br/>
<label>Last Name: </label><input type="text" v-model="user.lastName">
<h3></h3>
</div>
</template>
<script>
export default {
name: 'HomeCentral',
data() {
return {
title: 'Welcome',
user: {
firstName: 'John',
lastName: 'Doe',
},
showName: true,
items: [
{ title: 'Item One' },
{ title: 'Item Two' },
{ title: 'Item Three' },
],
};
},
methods: {
greet: function (greeting) {
alert(greeting);
},
pressKey: function (e){
console.log('pressed' + e.target.value);
},
enterHit() {
console.log('You hit enter');
},
computed: {
fullName: function() {
return this.user.firstName + ' ' + this.user.lastName;
}
},
},
};
</script>
<style scoped>
</style>
그러면 다음 오류가 발생합니다.
vue.runtime.esm.js?ff9b:205 Uncaught TypeError: fn.bind is not a function
at nativeBind (vue.runtime.esm.js?ff9b:205)
at initMethods (vue.runtime.esm.js?ff9b:3537)
at initState (vue.runtime.esm.js?ff9b:3305)
at VueComponent.Vue._init (vue.runtime.esm.js?ff9b:4624)
at new VueComponent (vue.runtime.esm.js?ff9b:4794)
at createComponentInstanceForVnode (vue.runtime.esm.js?ff9b:4306)
at init (vue.runtime.esm.js?ff9b:4127)
at createComponent (vue.runtime.esm.js?ff9b:5604)
at createElm (vue.runtime.esm.js?ff9b:5551)
at createChildren (vue.runtime.esm.js?ff9b:5678)
계산된 블록을 삭제하면 정상적으로 동작하기 시작합니다.
computed: {
fullName: function() {
return this.user.firstName + ' ' + this.user.lastName;
}
},
제가 뭘 잘못하고 있는지 알아낼 수 있게 도와주세요.
메서드 블록은 javascript 함수만 포함해야 합니다.메서드 블록 내에 메서드가 포함된 중첩된 개체가 있을 때도 이 오류가 발생했습니다.
예:
methods: {
namespace: {
methodName () {
}
}
}
다음 형식으로 포맷해야 합니다.
methods: {
namespace-methodName () {
}
}
아래 코드를 추가해서 시도해 주세요.
<template>
<div class="homecentral">
<input type="text" v-model="title"><br/>
<h1>{{title}}</h1>
<p v-if="showName">{{user.first_name}}</p>
<p v-else>Nobody</p>
<ul>
<li v-for="item in items" :key="item.id">{{item.title}}</li>it
</ul>
<button v-on:click="greet('Hello World')">Say Greeting</button>
<br/>
<input type="text" v-on:keyup="pressKey" v-on:keyup.enter="enterHit">
<label>First Name: </label><input type="text" v-model="user.firstName">
<br/>
<label>Last Name: </label><input type="text" v-model="user.lastName">
<h3></h3>
</div>
<script>
export default {
name: 'HomeCentral',
data() {
return {
title: 'Welcome',
user: {
firstName: 'John',
lastName: 'Doe',
},
showName: true,
items: [
{ title: 'Item One' },
{ title: 'Item Two' },
{ title: 'Item Three' },
],
};
},
methods: {
greet: function (greeting) {
alert(greeting);
},
pressKey: function (e){
console.log('pressed' + e.target.value);
},
enterHit() {
console.log('You hit enter');
}
},
computed: {
fullName: function() {
return this.user.firstName + ' ' + this.user.lastName;
}
},
};
</script>
<style scoped>
</style>
실수로 컴퓨터를 메서드에 중첩했습니다.
vue 네임스페이스 버그 및 솔루션
vue 및 vue 컴포넌트를 이러한 방법으로 사용하는 것은 권장하지 않습니다.
이벤트 바인드 버그 클릭
솔루션(글로벌)this
네임스페이스 버그)
vue 인스턴스를 반환하기만 하면 모든 것이 정상입니다.
상세 정보
https://github.com/xgqfrms/vue/issues/49
언급URL : https://stackoverflow.com/questions/49950029/vue-uncaught-typeerror-fn-bind-is-not-a-function
반응형
'programing' 카테고리의 다른 글
Ionic-Vue Ionicons 5.x.x에 아이콘이 표시되지 않음 (0) | 2022.08.10 |
---|---|
For Loop의 fork()에 대해 시각적으로 표시되는 동작 (0) | 2022.08.10 |
이그제큐트 어라운드(Execute Around)라는 사자성어가 뭐죠? (0) | 2022.08.09 |
다른 계산된 속성에서 getter를 호출하는 것은 테스트의 함수가 아닙니다. (0) | 2022.08.09 |
Java 8 lamdas, Function.identity() 또는 t->t (0) | 2022.08.09 |