Vue(타이머)는 mounted가 데이터에 가져올 수 없는 데이터 문제를 해결합니다
data() {
return {
isok:10,
}
}
vue에서 타이머를 사용하면 다음과 같이 mounted는 갈고리 함수입니다.
mounted(){
console.log(this.isok) // isok 10
setInterval(function(){
console.log(this.isok) // isok
}, 3000);
}
왜 이러지?왜냐하면 타이머의this는 윈도우를 가리킨다.
그럼 어떤 방법으로 이 문제를 해결할 수 있습니까?답은 있어요. 두 가지.
첫 번째:
화살표 함수로: 화살표 함수의this 지향은 고정불변(함수를 정의할 때의 지향)이고 vue에서 vue를 가리킨다.
mounted(){
setInterval(()=>{ consolog.log(this.isok) }, 3000);
}
두 번째:var that=this를 사용하면 정상적으로 호출할 수 있습니다.
mounted(){
var that=this;
setInterval(()=>{
console.log(that.isok)
}, 3000);
}
보충 지식: vue는 지정된 필드 정렬에 따라computed 방법을 사용합니다나는 쓸데없는 말을 더 이상 하지 않겠다. 모두들 코드를 직접 보는 것이 좋겠다.
<div id="app">
<ul>
<li v-for="(stu,index) in students1">{{stu}}</li>
</ul>
</div>
<script type="text/javascript">
new Vue({
el:"#app",
data:{
students:[
{name:" a",age:20},
{name:" b",age:21},
{name:" c",age:18},
{name:" d",age:19},
{name:" f",age:18}
]
},
computed:{
students1:function(){
return sortKey(this.students,'age')
}
}
})
function sortKey(array,key){
return array.sort(function(a,b){
var x = a[key];
var y = b[key];
return ((x<y)?-1:(x>y)?1:0)
})
}
</script>
위의 Vue(타이머)는 mounted가 데이터에서 얻을 수 없는 데이터 문제를 해결하는 것이 바로 편집자가 여러분에게 공유한 모든 내용입니다. 참고 부탁드리고 저희도 많이 사랑해 주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Vue Render 함수로 DOM 노드 코드 인스턴스 만들기render에서createElement 함수를 사용하여 DOM 노드를 만드는 것은 직관적이지 않지만 일부 독립 구성 요소의 디자인에서 특수한 수요를 충족시킬 수 있습니다.간단한 렌더링 예는 다음과 같습니다. 또한 v...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.