私は奇妙なjavascriptの問題があります。私はAPIからいくつかのデータを取得するためにvue jsとaxiosを使用しています。私はconsole.logをダンプして、値はそこにありますが、私のif文は真ではありません。Javascriptがtrueを返さない場合
コードの例が小さくなるように削除されました。
インラインコメントを参照してください。
HTML:
<input v-model="system_id">
<button v-on:click="getSystemData" class="btn btn-primary">Get system data</button>
Data model:
data:() => ({
errors: [],
system_id: null,
system_data: null
}),
Function:
getSystemData() {
HTTP.get('/api/get_systems')
.then(response => {
this.response = response.data
// equals 1234
console.log(this.system_id)
for (var key in this.response) {
// the id 1234 is found here in a large list
console.log(this.response[key].system_id)
// Does not go true?!?!
if (this.response[key].system_id === this.system_id) {
this.system_data = this.response[key].system_data
}
}
})
.catch(e => {
this.errors.push(e)
})
}
なぜトリガーしないのですか?
まず、このステートメントが実際に真であることを確認します。例えば、前に行にデバッガを置くことによって。あるいは、その声明が真実であれば、どうやって自分自身を証明しましたか? – trueunlessfalse
'this.system_id'のタイプは何ですか? https://stackoverflow.com/questions/359494/which-equals-operator-vs-should-be-used-in-javascript-comparisons –
'==='の代わりに '=='を試してみてください。 '==='演算子は、値と型をチェックします。あなたのケースはわかりませんが、値に異なるタイプがあるとします。 'number'と' string'ですか? – mingos