#やりたいこと
<input>タグに@focus と @bulr をつけて、dataに定義したmarket_info: false
をtrue
にしたい
#ソース
v-model関連の記述は省きます。
これでフォーカス時にtrueになると思うのですが、ならなく・・・
vue
1<template> 2 <div> 3 <input v-model="form.market_info_name" @input="onInputMarketInfo" @focus="onFocus('market_')" @blur="onBlur('market_')" 4 </div> 5<template> 6 7<script> 8 export default { 9 data () { 10 market_focus: false 11 }, 12 methods: { 13 onFocus (value) { 14 Function("this." + value + "focus" + "=true")(); 15 }, 16 onBlur (value) { 17 Function("this." + value + "focus" + "=false")() 18 } 19 } 20 } 21</script>
#調べたこと
こんな感じでconsole.log()を置いてみた
vue
1<template> 2 <div> 3 <input v-model="form.market_info_name" @input="onInputMarketInfo" @focus="onFocus('market_')" @blur="onBlur('market_')" 4 </div> 5<template> 6 7<script> 8 export default { 9 data () { 10 market_focus: false 11 }, 12 methods: { 13 onFocus (value) { 14 console.log(value) // -> market_ 15 console.log(typeof value) // -> string 16 Function("this." + value + "focus" + "=true")(); 17 console.log(this.market_focus) // -> false 18 }, 19 onBlur (value) { 20 Function("this." + value + "focus" + "=false")() 21 } 22 } 23 } 24</script>
やはりfalse
#ブラウザのコンソールで同様のことを試した
var value = "market_" Function("$vm." + value + "focus" + "=true")()
こちらではmarket_focusの値がtrueになり、画面に期待している動きが現れた。
なぜmarket_focusの値がtrueにならないのでしょうか。
教えていただけると助かります。
よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/26 13:44