【发布时间】:2023-03-09 02:22:01
【问题描述】:
请看下面的sn-p,有3个demo,前2个demo工作正常(v-model工作正常)。
但是对于最后一个,当您在<input> 中输入内容时,您会看到this['test 1'] 不会更新。 <h2>Name:<span>{{this['test 1']}}</span></h2> 始终是初始值。
似乎v-model 为this['test 1'] 绑定了一个克隆。对于这种情况,我们必须使用$data['test 1']。
有谁知道造成这些差异的原因是什么?
app = new Vue({
el: "#app",
data () {
return {
'test': "Cat in Boots",
'test 1': 'Snow White'
}
},
methods: {
testCase1: function(){
this['test'] = 'I am Cat in Boots' //works
this['test 1'] = 'I am Cat in Boots' //works
}
}
})
span {
background-color:green
}
a {
color:red
}
<script src="https://unpkg.com/vue@2.5.16/dist/vue.js"></script>
<div id="app">
<button @click="testCase1()">Test Case 1</button>It will change the data successfully.
<h2>Name:<span>{{test}}</span></h2>
<input v-model="test">
<h2>Name:<span>{{$data['test 1']}}</span></h2>
<input v-model="$data['test 1']">
<h2>Name:<span>{{this['test 1']}}</span></h2>
<input v-model="this['test 1']"><a>Type something in this input, the name will not be changed.</a>
</div>
【问题讨论】:
-
确实是非常奇怪的行为。这就是为什么你不应该像访问数组那样访问组件的数据
-
@Phiter 通常我们不会使用一个带空格的字符串作为一个组件数据的一个键。所以我们不会遇到上述情况。我只是好奇是什么原因造成的。
-
看起来您最终使用
this引用了另一个对象。检查以确保您实际上没有在编辑某些全局变量。
标签: javascript vue.js