3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Thymeleafを通じて画面に渡された値をVue.jsで利用する

Last updated at Posted at 2020-03-16

はじめに

テンプレートエンジンとしてはThymeleaf、フロントの処理にVue.jsを用いているプロジェクトで、行いたいajax処理の関係でどうしてもThymeleafを通じて渡された値をVue.jsで参照したくなり試行錯誤するハメになったのでその記録です。

本文

ref要素を用いることで実現可能です。
参照したい値がThymeleafによって埋め込まれたタグにref要素を追加します。
これによって $refs.hogehoge という形で対象タグのDOMを参照することができるようになります。
DOMを通じて、間接的にThymeleafで渡された値を参照するわけです。

注意すべき事項として、
「$refs.hogehoge」の利用(代入や演算はもちろんエイリアスの作成など)はコンポーネントライフサイクルのmounted以降でないといけません。
理由はもちろん、DOMが作られたあとでなければ参照のしようがないためです。
createdの段階で利用しようとすれば[undefined]となります。

sample.html
<html>
  <!-- ヘッダ省略 -->
  <body>
  <div id="wrapper">
    <!-- ユーザ名を表示するような場合 -->
    <span th:text="${username}" ref="username"></span>
  </div>
  <script>
  const app = new Vue({
    el: '#wrapper',

    created() {
      // [undefined]
      console.log(this.$refs.username.textContent);
    },

    mounted() {
      // ${username}の中身がコンソールに表示される
      console.log(this.$refs.username.textContent);
    }

  });
  </script>
  <body>
</html>

おわりに

Thymeleafのみならず、他のテンプレートエンジンでも応用可能です。
もっとも、 "ajax処理でテンプレートエンジンから渡された値を用いる" こと事態避けるべきものではあります。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?