Vue: Observer 개체로 자동 채워지는 빈 어레이
데이터의 빈 배열을 초기화한 다음 서버에서 JSON을 가져와 채우려고 한다.
문제는 어레이에 항상 추가 Observer 객체가 있기 때문에 로그에 기록하면 다음과 같은 내용이 표시된다는 점이다.
빈 항목 배열: [ob: 관찰자]
다음은 발췌한 코드:
data() {
return {
items: []
}
},
created() {
this.$http.get('/api/menus').then(function (response) {
console.log('items before', this.items); //THIS LOGS items before: [__ob__: Observer]
this.items = [].concat(response.body);
this.items.forEach(function (item) {
console.log('item', item);
item.$add('active', false);
item.tests.forEach(function (test) {
test.$add('active', false);
});
});
}).catch(function (err) {
console.error('err', err);
});
},
문제는 어레이의 개체에 새 속성을 추가하려고 하면 다음과 같은 오류가 발생한다는 점이다.
오류 TypeError: 항목.$add는 함수가 아님
디버깅할 때 나는 그것이 관찰자 개체를 배열의 일부로 간주하기 때문에 그런 일이 일어난다.
정상인가?단지 $add가 존재하는지 확인해야 하는가?뷰에서 렌더링할 때 Vue가 이 개체를 무시하는가?
코드에 따라 설정하려는 경우active
당신의 소유물.items
에 반대하다false
. 또한 모든 속성을 설정하려는 경우active
어느 항목에서나tests
의 소유물.false
.
Vue.js는 반응적이며 자동으로 변화를 감지하지만, 그 속성이 아니라 개체 자체에 대해서만 변화를 감지한다.어레이의 경우 vue는 이러한 방법에 의한 변경만 감지한다(vue.js https://vuejs.org/v2/guide/list.html#ad)의 목록 렌더링에 대한 자세한 정보:
- 푸시슈트
- 펑펑 울다
- 교대조
- 교대하지 않는
- 이음매의
- 분류를 하다
- 역행의
하지만 재산은 어떨까?넌 할 수 있다.force
다음이 포함된 어레이 또는 개체의 깊은 곳에서 변경 내용을 보려면 vueVue.set(object, property, value)
또는this.$set
어느 모로 보아서Vue
인스턴스
예를 들어 다음과 같이 구현하십시오.
this.items.forEach(function (item, key) {
console.log('item', item);
this.$set(this.items[key], 'active', false);
item.tests.forEach(function (test, testKey) {
this.$set(this.items[key].tests[testKey], 'active', false);
}, this);
}, this);
그리고 그것은 효과가 있을 것이다.다음은 작업 예: http://jsbin.com/cegafiqeyi/edit?html,js,output(일부 ES6 기능 사용, 혼동하지 마십시오)
'IT이야기' 카테고리의 다른 글
Vuex & Storybook:정의되지 않음, null 또는 원시 값에서 대응적 속성을 설정할 수 없음: 정의되지 않음 (0) | 2022.05.23 |
---|---|
형식 정의 함수 포인터? (0) | 2022.05.23 |
Vuejs - 작업에서 데이터 반환 (0) | 2022.05.23 |
Nuxt.js 저장소에서 localStorage를 사용하는 방법 (0) | 2022.05.23 |
vue JS가 상위에서 구성 요소로 변경 내용을 전파하지 않음 (0) | 2022.05.23 |