+2
Đưa media từ rails assets vào trong file javascript
Chào mọi người. Mình lại có câu hỏi
Hiện tại trong code mình đang xử lý như dưới đây.
import { Controller } from '@hotwired/stimulus'
const SOUND = `/assets/audio/drumsticks.mp3`
// const SOUND = `../assets/audio/drumsticks.mp3`
export default class MetronomeController extends Controller {
static targets = ['bpm', 'tempoButton']
connect() {
this.bpm = parseInt(this.bpmTarget.value)
this.playing = false
this.tempoButtonTarget.textContent = this.tempoButtonTarget.innerHTML
this.beat = new Audio(SOUND)
}
handleClick() {
this.playing = !this.playing
if (this.playing) {
this.start()
} else {
this.stop()
}
}
start() {
console.log(this.bpm)
this.timer = setInterval(() => this.beat.play(), (60 / this.bpm) * 1000)
this.tempoButtonTarget.textContent = 'Stop metronome for the song'
}
stop() {
clearInterval(this.timer)
this.tempoButtonTarget.textContent = 'Start metronome for the song'
}
}
File app/assets/audio/drumsticks.mp3
mình đã có. Tuy nhiên hiện phía js của mình đang không đọc được file này. Project Rails của mình có cần config gì thêm không nhỉ?
Thêm một bình luận
1 CÂU TRẢ LỜI
0
File của em đã được public đúng URL chưa? Anh đoán là chưa. Em đưa nó vào thư mục public nhé. http://localhost/assets/audio/drumsticks.mp3
Với cả, em dùng lệnh setInterval với this như kia sẽ lỗi đó. Vì this sẽ out of scope và còn không tồn tại. Em dùng kiểu này:
setInterval(this.beat.play.bind(this.beat), 1000)