私はVueのバインドされた変数の値を変更する際に問題があります(これはVueの知識が不足しているのかJavaScriptの一般的なものなのか分かりません)。 Vueのインスタンスの初期化がさらにスクリプトダウンバインドされた変数が変更されないのはなぜですか?
var vm = new Vue({
delimiters: ['<<', '>>'],
el: "#index-container",
data: {
posts: [],
tags: {},
},
methods: {
switchAll: function(what) {
console.log(what)
console.log(JSON.stringify(this.tags))
_.forEach(this.tags, function (v, k) {
console.log(k)
this.tags[k] = false
})
console.log(JSON.stringify(this.tags))
}
},
(...)
以下のコードを介して行われる
、tags
の値は反応性を確実にするためにVue.set(vm.tags, tag, true)
等constuctionが設定されています。彼らはその後にオブジェクトtags
の関連要素の値を変更しないよう、このDIV をクリック
<div class="tag on" v-for="(content, name) in tags" v-show="tags[name]" v-on:click="tags[name] = false">
としてくびれに使用されている(以前に初期化)。
これまでのところすべてが期待通りに機能します。
問題は方法switchAll
にあります。私は似たv-on:click()
要素(例えばswitchAll(false)
)でそれを使用する場合は、解雇を取得しますが、コンソール出力は以下の通りです:
false
{"hello":true,"world":true}
hello
world
{"hello":true,"world":true}
私の問題は、最後の行は{"hello":false,"world":false}
でなければならないことです。
私は(両方ともsupposed to be equivalentあるが)this.tags[k] = false
とthis.tags.k = false
を使用しようと、私は私が持っている問題は(言葉遣いについての謝罪が、私はJSに新しいです)this.tagsのキーはに「裸」していることであると信じています私の場合、 "引用"されていません。どのような私の操作がないと、「引用された」、今回の新しいキーを追加することである(ただし、k
()は引用符なしhello
かworld
のいずれかであるとして、その後this.tags.k = false
は、問題ないはず
私は失われています - 。私のコードで何が間違っています、そしてなぜdiv
の最初の(作業)の例ではインラインコードはlodashの専門家罰金?
ありがとうございました - これがこれでした。私はいつも 'this'が再定義されてしまうのを嫌う(Pythonの背景から来ている) – WoJ