일반 자바스크립트의 VueJS
내 vue 구성 요소에 카운트다운 타이머를 추가하고 싶다.나는 보통 자바스크립트로 쓰여진 대본을 찾았다.이것은 나의 자바스크립트 파일이다.
var upgradeTime = 7200;
var seconds = upgradeTime;
function timer() {
var days = Math.floor(seconds/24/60/60);
var hoursLeft = Math.floor((seconds) - (days*86400));
var hours = Math.floor(hoursLeft/3600);
var minutesLeft = Math.floor((hoursLeft) - (hours*3600));
var minutes = Math.floor(minutesLeft/60);
var remainingSeconds = seconds % 60;
if (remainingSeconds < 10) {
remainingSeconds = "0" + remainingSeconds;
}
document.getElementById('countdown').innerHTML = hours + ":" + minutes + ":" + remainingSeconds;
if (seconds == 0) {
clearInterval(countdownTimer);
document.getElementById('countdown').innerHTML = "Completed";
} else {
seconds--;
}
}
var countdownTimer = setInterval('timer()', 1000);
나는 이것을 clock.js로 내 vue js 프로젝트 src 폴더에 저장했다.이 clock.js 파일을 vue 구성 요소로 가져와서 출력을 얻는 방법
이 JavaScript 코드에 대해 정상적인 출력 방법이 이와 같은 것이 될 것이다.
<span id="countdown" class="timer"></span>
하지만 vue 구성 요소 내에서 출력을 얻는 방법은?나는 후배 개발자인데, vue 안에서 정상적인 자바스크립트를 어떻게 사용하는지 잘 모르겠어.나는 네가 내 질문을 이해하기를 바란다.감사합니다.
정말 간단하고 솔직한 솔루션을 원한다면, 그 모든 것을 간단히 그 안에 넣을 수 있다.mounted
콜백: 컴포넌트 템플릿을 구문 분석하고 DOM을 생성하여#countdown
그때쯤이면 접근할 수 있을 겁니다VueJS의 라이프사이클 후크에 대해 자세히 알아보십시오.
참고: 그러나 VueJS를 올바르게 사용하는 방법을 실제로 배우고 싶다면 이 답변의 마지막에 사용자 지정 타이머 구성 요소를 생성하는 방법에 대해 계속 읽어 보십시오:)mounted
콜백, 처음이자 다소 단순한 VueJS 구성 요소를 제작하는 재미난 부분을 놓치고 있는 경우.
시작하기 전에 호출할 때 오류가 발생한다는 점에 유의하십시오.timer()
당신 안에setInterval
콜백다음과 같아야 한다.
var countdownTimer = setInterval(timer, 1000);
여기 개념 증명 예제가 있는데, 타이머 논리를 모두 "터키"하여mounted()
콜백:
new Vue({
el: '#app',
template: '#custom-component',
mounted: function() {
var upgradeTime = 7200;
var seconds = upgradeTime;
function timer() {
var days = Math.floor(seconds / 24 / 60 / 60);
var hoursLeft = Math.floor((seconds) - (days * 86400));
var hours = Math.floor(hoursLeft / 3600);
var minutesLeft = Math.floor((hoursLeft) - (hours * 3600));
var minutes = Math.floor(minutesLeft / 60);
var remainingSeconds = seconds % 60;
if (remainingSeconds < 10) {
remainingSeconds = "0" + remainingSeconds;
}
document.getElementById('countdown').innerHTML = hours + ":" + minutes + ":" + remainingSeconds;
if (seconds == 0) {
clearInterval(countdownTimer);
document.getElementById('countdown').innerHTML = "Completed";
} else {
seconds--;
}
}
var countdownTimer = setInterval(timer, 1000);
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.min.js"></script>
<div id="app"></div>
<script type="text/x-template" id="custom-component">
<div>
<p>I am a custom component.</p>
<p>
My timer:<br />
<span id="countdown" class="timer"></span>
</p>
</div>
</script>
실제 이상적인 해결책은 실제로 카운트다운 타이머를 위한 사용자 지정 VueJS 구성 요소를 만드는 것이다;) 타이머 자체를 위한 또 다른 사용자 지정 구성 요소를 만드는 것만으로 이 작업을 수행할 수 있다.몇 가지 팁과 요령:
- 사용하다
props
사용자 지정 기간을 경과할 수 있도록 - 사용하는 것을 잊지 마십시오.
data
타이머를 감소시키지만 소품을 변이할 수는 없기 때문에, 시간을 복사하는 것 - 사용하다
this.$el
타이머 컴포넌트를 참조하면, 당신은 심지어 당신의 타이머 컴포넌트를 사용하지 않고도 할 수 있다.id
참조 ;)
아래 개념 증명서를 참조하십시오.
Vue.component('my-timer', {
template: '#my-timer',
props: {
upgradeTime: Number
},
data: function () {
return { seconds: this.upgradeTime }
},
methods: {
timer: function() {
var days = Math.floor(this.seconds / 24 / 60 / 60);
var hoursLeft = Math.floor((this.seconds) - (days * 86400));
var hours = Math.floor(hoursLeft / 3600);
var minutesLeft = Math.floor((hoursLeft) - (hours * 3600));
var minutes = Math.floor(minutesLeft / 60);
var remainingSeconds = this.seconds % 60;
if (remainingSeconds < 10) {
remainingSeconds = "0" + remainingSeconds;
}
this.$el.innerHTML = hours + ":" + minutes + ":" + remainingSeconds;
if (this.seconds == 0) {
clearInterval(countdownTimer);
this.$el.innerHTML = "Completed";
} else {
this.seconds--;
}
}
},
mounted: function() {
setInterval(this.timer, 1000);
},
});
new Vue({
el: '#app',
template: '#custom-component'
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.min.js"></script>
<div id="app"></div>
<script type="text/x-template" id="custom-component">
<div>
<p>I am a custom component.</p>
<p>
My timer:<br />
<my-timer upgrade-time="7200"></my-timer>
</p>
</div>
</script>
<script type="text/x-template" id="my-timer">
<span class="timer"></span>
</script>
그 코드에서 CountdownTimer 구성 요소를 만드는 게 좋을 거야.이 게시물을 한번 보십시오: 카운트다운 타임머신 사용-뷰즈
참조URL: https://stackoverflow.com/questions/49193622/vuejs-with-normal-javascript
'programing' 카테고리의 다른 글
부에가 있는 칸에 캔버스를 넣으려면 어떻게 해야 할까? (0) | 2022.05.15 |
---|---|
Vuex에서 상태 어레이를 업데이트하는 방법? (0) | 2022.05.15 |
create-nuxt-app 버전을 확인하고 업그레이드하는 방법 (0) | 2022.05.15 |
c_str 함수의 용도는 무엇인가? (0) | 2022.05.15 |
MVC 프로젝트에서 MapState가 Vue3와 함께 Vuex4를 찾을 수 없음 (0) | 2022.05.15 |