반응형
Vue.js.$set이 함수가 아닙니다.
vuejs에 저장된 데이터를 수정하려고 합니다.$set
기능.하지만 다음과 같은 오류가 발생했습니다.TypeError: app.messageBox.$set is not a function.
다음은 앱과 messageBox를 정의하는 방법에 대한 코드입니다.
app = new Vue({
el: '#app',
data: {
messageBox: [{
id: 1,
message: 'first'
}, {
id: 2,
message: 'second'
}]
}
});
다른 js 파일에서 messageBox의 데이터를 수정하려고 합니다.
function test() {
app.messageBox.$set(0, {message: 'aaa'});
}
올바른 구문은 입니다.컴포넌트 코드 또는 단일 파일컴포넌트 내에서 사용하는 경우 다음과 같은 에일리어스를 사용할 수 있습니다.
Vue.set(app.messageBox, 0, { message: 'outside component' });
// or when you don't access to `Vue`:
app.$set(app.messageBox, 0, { message: 'outside component' });
// or when `this` is the Vue instance:
this.$set(this.messageBox, 0, { message: 'inside component' })
const app = new Vue({
el: '#app',
data() {
return {
messageBox: [{
id: 1,
message: 'first'
}, {
id: 2,
message: 'second'
}]
};
},
mounted() {
setTimeout(() => {
this.$set(this.messageBox, 0, { message: 'inside component' })
}, 1000)
}
});
setTimeout(() => {
Vue.set(app.messageBox, 0, { message: 'outside component' });
}, 2000);
<script src="https://unpkg.com/vue@2.6.10/dist/vue.min.js"></script>
<div id="app">
<p v-for="msgBox of messageBox">{{msgBox.message}}</p>
</div>
다음 예시는 어레이 카에서 제품의 QTY를 업데이트하는 것입니다.
const indice = this.car.findIndex((pr) => pr.id === product.id);
if(indice===-1){
product.qty = 1
this.car.push(product)
}else{
//Vue no detectara cambios en el array si se actualiza por indice https://stackoverflow.com/a/59289650/16988223
//this.car[indice].qty++
const productUpdated = product
productUpdated.qty++
this.$set(this.car, indice, productUpdated)
}
언급URL : https://stackoverflow.com/questions/46821414/vue-js-set-is-not-a-function
반응형
'programing' 카테고리의 다른 글
TypeError: 정의되지 않은('collection' 읽기) 속성을 읽을 수 없음 - Vuejs 및 Firebase (0) | 2022.07.10 |
---|---|
FireBase 데이터베이스에서 객체를 삭제하는 방법 (0) | 2022.07.10 |
'java.lang'을 어떻게 풀어요?"No Class Def Found Error?" (0) | 2022.07.10 |
다른 문장에서 GCC의 __builtin_expect의 장점은 무엇입니까? (0) | 2022.07.10 |
동적 ID를 v-for loop + 문자열의 필드와 연결하는 방법은 무엇입니까? (0) | 2022.07.10 |