質問: 初心者です ttps://cr-vue.mio3io.com/tutorials/todo.html こちらを参考に、自分用にアプリを作ろうとしています。 登録していないが完了したものも登録したく、作業中と完了を追加する時点で選択したいと思っています。 そこで、2択のラジオボタンで、valueを0と1で区別しました。 それをjqueryで取得し、 ``` var val= $('input[name=stts]:checked').val() ``` そして、step7のところに、 ``` this.todos.push({ id: todoStorage.uid++, comment: comment.value, state: val }) ``` という形でstateの値として保存 しているつもりです。 結果として、表示切替(step12)の「すべて」には選択したとおりにきちんと追加されるのですが、 「作業中」「完了」には表示されません。 しかし、リストにある状態変更ボタン(step13)で変更するとちゃんと表示されるようになります。 なぜすべてには状態もしっかり表示されるのに、状態で表示切替すると表示されないのでしょうか。 きちんとローカルストレージにstateの値として登録されておらず、切り替えることでちゃんと登録される手順を踏むのかと思いましたが、すべてではしっかり表示されるのです。 変数を使用せず、 ``` this.todos.push({ id: todoStorage.uid++, comment: comment.value, state: 1 }) ``` と、常に1で登録されるようにしてみるとちゃんと完了に追加されていきます。(0=作業中 1=完了) 確認しましたが、変数はしっかり選択したvalueの値を読み取っていました。なにがいけないのでしょうか。 この説明で伝わるでしょうか。アドバイスいただけますと助かります。 ![すべて](https://teratail.storage.googleapis.com/uploads/contributed_images/2fd03e53bf35f368c603f0bc24b72dfb.png)![作業中(メモ)](https://teratail.storage.googleapis.com/uploads/contributed_images/b4daf8f1ff3f343a20e189c6aa561a3c.png)![完了(記入済)](https://teratail.storage.googleapis.com/uploads/contributed_images/f3388bde46ab783c7e89d2d03596f80b.png)
回答: 全体像が不明瞭なので、参考サイトからの推測ですが、 ``` var val= $('input[name=stts]:checked').val() ``` で取得した`val`が文字列の`'1'` `'0'`なので、 ``` { value: -1, label: 'すべて' }, { value: 0, label: '作業中' }, { value: 1, label: '完了' } ``` の`value`と比較したときに型がかみ合わず、表示されないのではないでしょうか。 「すべて」のときに表示されるのは比較がなく文字通り全部表示するからだと思います。