PerlフレームワークCatalystとVue.jsを両立させた時にハマった話
PerlフレームワークのCatalystのtemplatetoolkitファイルとVue.jsの記述はそのまま書くとハマります。
現象
sample/report.tt
mounted () {
this.$nextTick(() => {
const canvas = document.getElementById('daily_graph')
this.chart = new Chart(canvas, {
type: 'bar',
data: レポートデータ
options: オプション
})
})
}
sample/report.tt
mounted () {
this.$nextTick(() => {
const canvas = document.getElementById('daily_graph')
this.chart = new Chart(canvas, {
type: 'bar',
data: レポートデータ
options: オプション
})
})
}
こんな感じでChart.jsを描画する処理を書いていました。オプションとかの書き方はChart.jsの公式リファレンス参照。
記述としては問題ないのですが、これをブラウザで実際に動かすと。。。
いやいや僕の書いてた $nextTick
はどこ行ったんだよ。。 なんと消えてます。
調べても全く解決方法が出てこないので色々試したら解決しました
解決
\$マークの前にエスケープのバックスラッシュを追記します
sample/report.tt
mounted () {
- this.$nextTick(() => {
+ this.\$nextTick(() => {
const canvas = document.getElementById('daily_graph')
this.chart = new Chart(canvas, {
type: 'bar',
data: レポートデータ
options: オプション
})
})
}
表示されましたね!
なんで?
正直わかんないです。ですが、Perlにとって\$マークはスカラー値の変数を意味するため$nextTickという変数を展開しようとして、そんなものはPerl側で記述してないので空になっていると思ってます(合ってるか知りません)
これ結構大問題で、$emitとかも全部エスケープする必要あります。早く.vueファイルに移行したいな~・・・
.ttファイルとの共存は難しそうです。
Author And Source
この問題について(PerlフレームワークCatalystとVue.jsを両立させた時にハマった話), 我々は、より多くの情報をここで見つけました https://qiita.com/mikene_koko/items/8dd589954c77d14e65fd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .