LoginSignup

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Vueのmethods内の値の受け渡し方法が分からないです。

解決したいこと

下のonChange内のfail.nameをその上のfailValueに値を渡したいのですが、どうすればいいですか?

methods: {
  },
   fileValue(file){
    console.log(file.name)
  },
   onChange(file/*, fileList*/) {
    // ファイル名をコンソールへ出力
   console.log(file.name)
  },}
0

3Answer

onChange内で呼べば動きますかね。

methods: {
  fileValue(file){
    console.log(file.name)
  },
  onChange(file/*, fileList*/) {
    // ファイル名をコンソールへ出力
    fileValue(file)
    console.log(file.name)
  },
}
1

Comments

  1. 回答ありがとうございます、ですがfileValue内でnameが定義されていないとエラーが出ているのですが、nameも渡したいときどうすればいいですか?

    エラー内容です。

    ```console
    handler: "TypeError: Cannot read property 'name' of undefined"

    found in
    ```
  2. すると、そもそもonChange(file)が実行された時点で、
    既にfile.nameが定義されていないと思われますね。

    file.nameが定義されていれば、fileを渡したときに
    勝手にfile.nameも一緒に渡されているはずです。

    まずは、以下のようにonChange(file)実行時の
    fileを出力して、中身を確かめてみると良さそうです。

    onChange(file) {
    console.log(file)
    }

    これで(多分)fileにnameが入っていないと思いますので
    onChange(file)が実行される前にfile.nameを定義して
    おく処理が必要になるかと思われます。

    上のコードからでは、fileにいつどういう処理が走るか
    わからないため、その部分をコピペしていただけると
    また詳しく回答できると思います。
    (その前に解決したならもちろん追記は不要です)

これをお試し下さい。

{
data() {
  return {
    file: {
     name: 'foo'
    }
  }
},
methods: {
  fileValue(file){
    this.file = file
    console.log(this.file.name)
  },
  onChange() {
    console.log(this.file.name)
  },
}
1

Try this:

data: {
  file: {
    name: 'foo'
  }
},
methods: {
   fileValue(file){
    this.file = file
  },
  onChange(file/*, fileList*/) {
    console.log(this.file.name)
  }
}

Or you can write:

data: {
  file: {
    name: 'foo'
  }
},
methods: {
   fileValue(file){
    this.file = file
  },
  onChange(file/*, fileList*/) {
    this.printFileName()
  },
  printFileName() {
   console.log(this.file.name)
 }
}
0

Your answer might help someone💌