質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vuetify.js

Vuetify.jsは、マテリアルデザインを基本とするVue.jsのCSSフレームワークです。多くのマテリアルデザインのコンポーネントを提供しており、あらゆるアプリケーションに対応可能。vue-cli用テンプレートがあり、簡単にページを作成できます。

Q&A

解決済

2回答

4450閲覧

Vueでsliceメソッドがプロパティとして認識されている

Khy

総合スコア118

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Vuetify.js

Vuetify.jsは、マテリアルデザインを基本とするVue.jsのCSSフレームワークです。多くのマテリアルデザインのコンポーネントを提供しており、あらゆるアプリケーションに対応可能。vue-cli用テンプレートがあり、簡単にページを作成できます。

0グッド

0クリップ

投稿2019/03/24 10:33

現在Vue.jsでWebアプリを製作中です。

2019-03-01のような日付を2019年03月01日のように書き換えるためにsliceメソッドを使っているのですが、JavaScriptコンソールでCannot read property 'slice' of undefined"とエラーが表示されてしまいます。

メソッドではなくプロパティとして認識されているために出るエラーだと思うのですが解決策はありますでしょうか?

該当箇所のコードは以下の通りです。お力をお貸しいただければ助かります。

<v-flex>{{currentUser.birth | JPdate}}</v-flex>
filters: { JPdate: function (value) { return value.slice(0, 4)+"年"+value.slice(5, 7)+"月"+value.slice(8, 10)+"日"; }, },

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

メソッドではなくプロパティとして認識されているために出るエラーだと思うのですが解決策はありますでしょうか?

いえ、そもそもJavaScriptでは、メソッドもプロパティの一種です。

このエラーの原因はundefinedの方で、valueundefinedが来てしまうと、.sliceを取り出そうとした時点でエラーとなります。

投稿2019/03/24 10:45

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

メソッドではなくプロパティとして認識されているために出るエラー

ではなく、currentUser.birthundefinedのため、「undefinedにはsliceというプロパティはない」というエラーです。(関数も、オブジェクトのプロパティです。)

全体像が見えないので、正確には回答できませんが、以下を確かめてみてください。

  • currentUser.birthが存在するか
  • currentUser.birthの初期値がundefinedではないか(あとで値が設定されるようになっていないか)

currentUser.birthの初期値を空の配列[]にするか、
フィルターに条件判定を入れておく(下記参照)などが方法として考えられます。

filters: { JPdate: function (value) { if (!value || !Array.isArray(value)) { // 条件判定はお好みで return '' } return value.slice(0, 4)+"年"+value.slice(5, 7)+"月"+value.slice(8, 10)+"日"; }, },

投稿2019/03/24 10:44

編集2019/03/24 10:45
NozomuIkuta

総合スコア1260

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Khy

2019/03/24 17:24

詳細に教えて頂きありがとうございます! currentUser.birthを初期化していなかったのが原因だったのですね。。 初期値を入れることで無事解決いたしました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問