Vue.js/日記002
Viewの表現力
<div id="app">
{{ message }}
</div>
前回、二重括弧({{}})で囲んだ部分がテンプレート機能のようにVue.jsの制御下に置かれるというところを学びました。もっといろいろなこともできるそうなので、一つずつ眺めていきます。
属性(attribute)の制御
<div id="app">
<span v-bind:title="message">some text</span>
</div>
表示部(#app)の中の要素の属性をVue.jsの制御下におけるそうです。ここではspanタグのtitle属性の場合を表します。「v-bind:(属性名)="(データ名)"」という設定をタグの中で行うと、指定の属性に指定のデータ名のついたデータが紐づくようです。パッと思いつくところで、imgタグのsrc属性を変更するのに使えそうかなと思いました。
表示・非表示の切り替え
<div id="app">
<span v-if="visible">some text</span>
</div>
表示部内のタグに「v-if」属性をつけると、そこで指定された変数に応じてその要素の表示・非表示を切り替えてくれるそうです。どうやらVue.jsでは「v-」という接頭辞をつけた属性をガンガンViewに添加していく方針のようですね。(ディレクティブって呼ぶらしいです。)「if」はいろんなプログラミング言語で条件分岐を表す予約語になっていますが、Vue.jsでは「表示・非表示」の条件のみを示すということになるみたいです。
ループ
<div id="app">
<ol>
<li v-for="fruit in fruits">
{{ fruit.name }}
</li>
</ol>
</div>
<script type="text/javascript">
var app = new Vue({
el: '#app',
data: {
fruits: [
{ name: 'apple' },
{ name: 'banana' },
{ name: 'orange' }
]
}
})
</script>
v-forディレクティブは配列データを順番に処理するのに使うようです。「for」はプログラミング言語ではループ処理を記述するのに使いますが、ここでは配列データのための仕組みなのですね。「v-if」のときにもちょっと思ったのですが、微妙に元の意味とは異なるので、プログラマ的には混乱しそうな気もしますが、フロントエンドのエンジニア的にはifを表示制御に、forを配列探索に使うことが多いのであんまり気にならないのかもしれません。
Modelの部分に配列データ(fruits)がでてきて、Viewの部分では繰り返したい要素(li)に「v-for="fruit in fruits"」をつけて配列(fruits)の中身を一つずつfruitとして操作できるようにしています。app.fruitsには初期値として三つの値が用意されていますが、これを増減させるとちゃんとViewに反映されました。
app.fruits.push({name:'mango'})
app.fruits.shift()
- Vue.js/リストを作った「一覧画面」みたいに言われる画面を作りましょう。 rowsというデータに人名や年齢を詰め込んだリストを用意してみました。 v-forループを使って一覧表示しましâ¦
- Vue.js/日記003WEBの特性でもあるインタラクティブな部分はVue.jsではどう記述するのかなと思ったら、メソッドを規定しておいて、操作対象の要素に必要なメソッドを紐づければいâ¦
- Vue.js/メニューを作った試しにクリックして選ぶメニューを作ることにしました。 メニューからカテゴリーを選ぶ、といった用途のつもりです。データ部にはカテゴリーの選択肢リストと現在選択中のâ¦
- Vue.js/Vue 3でいろいろ変わってた(5年くらい浦島太郎だった前提で書いてます。Vue 3で変わったこと、Vue 2で変わったこと、そもそも備わっていたけど知らなかっただけのことなど雑多に記しますâ¦
- Vue.js/リストを改良した前回 、複数ある項目をリスト表示して、件数を数えて、絞り込み機能をつけました。絞り込まれたリスト(filteredRows)が現在の表示対象です。全部で6件あるâ¦
- Vue.js/日記001Vue.jsの学習にあたって教材はどうしようかと思ったのですが、とりあえず 公式サイト の資料でもたくさん学べそうにみえたので、そこからはじめてみようと思いますâ¦
- Gutenberg/日記004前回、オリジナルのブロックを作ってみて、また、実際の記事編集に使ってみて、「なんかこれじゃない」感が湧いてきました。ブロック要素をガツガツつなげて、簡単編集を目â¦
- JavaScript/Webコンポーネント/ライフサイクルコールバックcustomElements.define('fan-menu', FanMenu); 前回、こんな感じで独自のタグとその実体となるクラスを結びつけました。このâ¦
- mixiアプリ/日記13mixiアプリ開発以外の業務がここのところ多かったので、すっかりご無沙汰をしていました。開発に関する所作もいろいろ忘れていたので、自分の日記でも読んでいろいろ思â¦
- GMAPS/地図の設置地図の設置の前にAPI用のレジストリキーの入手はお済みですか? オフラインで使用する場合は必要ありませんが、WEBで公開することになる場合は、 以下のページからâ¦