20
8

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.

【Vue.js入門】v-ifを活用して空配列時にToDoアプリに「Todoはありません」と表示しよう!

Last updated at Posted at 2018-11-03

空配列時にToDoアプリに「Todoはありません」表示する

前回までは【Vue.js入門】v-bindでclassを操作してToDoアプリの完了状態を管理してみるにて構築していました!

今回のサンプルコードはこちらです!
ToDoアプリ上にToDoが存在しない(空配列時)にはTodoはありません」と表示できるようになります。
Screen Capture 47.mp4.gif

v-ifディレクティブとは?

何かしらの言語に触れたことのある方なら直感的に使用できると思います。

<li v-if="todos.length">
  処理A
</li>
<li else>
  処理B
</li>

上記のコードなら、todos(todo配列)にtodoがあれば処理A、todoがなければ処理Bが実行されるようになります。

早速、v-ifを使ってみよう!

上で説明した通り、実装してみましょう。

    <h1>My Todo Lists</h1>
    <ul v-if="todos.length">
            //todoが存在したらの処理A↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
      <li v-for="(todo, index) in todos">
        <input type="checkbox" v-model="todo.isDone">
        <span :class ="{done: todo.isDone}"> 
          {{ todo.title }}
        </span>
        <span @click="deleteItem(index)" class="command">[☓]</span>
      </li>
             //todoが存在したらの処理B↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
    </ul>
    <ul v-else> 
            //todoが存在しなかったらの処理↓↓↓↓↓↓↓↓
      <li>ToDoはありません</li>
            //todoが存在しなかったらの処理↑↑↑↑↑↑↑↑
    </ul>

タグ内では、todos(todo配列)にtodoがあれば、前回までに実装した処理Aが実行され、以下のようにUIに反映されます。
スクリーンショット 2018-11-03 23.37.44.png

li v-elseでは、!todos.lengthすなわちtodoがなければ処理Bが実行されるようになります。
todosが空配列の場合に実行されるので「ToDoはありません」と表示させます。
スクリーンショット 2018-11-03 23.41.22.png

これで一通り実装できたのできました!
Screen Capture 47.mp4.gif

よりToDoリストに近づいてきましたね!!
サンプルコードもあるので実装してみてください!
次回くらいからドットインストール的にはローカルストレージに入れるはず…(笑)

※2020年1月更新
##MENTAでコードレビューやプログラミング勉強相談を行っています!
お気軽にメッセージを下さい!
プランはこちらになります!

20
8
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
20
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?