Vue가 생소하고 뷰 모델 데이터에 액세스하는 방법이 확실하지 않습니다. 언제 this.property
을 사용해야하고 언제 vm.$data.property
을 사용해야합니까?
아래 예제에서는 행을 선택할 수있는 테이블이 있고 모든 행을 선택하고 모든 행을 선택 취소하는 메서드가 있습니다. 선택을 취소하면 this.selectedRows
에 의해 selectedRows에 액세스 할 수 있습니다. 그러나 select에서 this.selectedRows가 정의되지 않았기 때문에 rowTableVm.$data.selectedRow
을 사용해야합니다.
언제 사용해야합니까? 언제 vm. $ 데이터를 사용해야합니까?
<tbody>
<tr v-for="row in get_rows()">
<td>
<input type="checkbox" v-bind:value="row.id" v-model="selectedRows">
</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
var rowTableVm = new Vue({
el: '#rowTable',
data: {
rowList: [{..},{..}],
selectedRows: []
},
methods: {
get_rows: function get_rows() {
return this.rowList;
},
deselect_rows: function() {
this.selectedRows= [];
},
select_rowse: function() {
this.deselect_rows();
this.get_rows().forEach(function (entry) {
rowTableVm.$data.selectedRows.push(entry.id);
});
}
}
});
Vernj와는 아무런 관련이 없습니다. 'forEach'(및 다른 많은 장소)에서 'this'가 작동하는 것과 같습니다. Javascript 자체에있어 근본적인 것입니다. –
언제나 vm. $ data를 참조하는 것이 더 나은가요? 대부분 forEach 블록을 많이 사용하게 될 것입니다. –
@LordVermillion 내가 말했듯이, 가능하면 언제나'vm. $ data'를 사용하지 말아야합니다. 대신에 'this'에 대한 변수 참조를 사용하는 것에 충실하십시오. 양자 택일로,'Array.forEach'는'forEach (callback, thisArg)'와 같은 메소드 시그니처를가집니다.'thisArg'는'this' 참조를 명시 적으로 사용하도록 허용합니다. 따라서 this.get_rows(). forEach (function (entry) {..., this)};를 할 수 있으며'forEach' 호출에서'this'가 참조하는 것을 리바 인 딩해야합니다. 그러나 절대적으로'VM $ data'를 사용하는 것을 피하는 것은 아주 나쁜 습관입니다! –