javascript - v-model 的 this['key'] 和 $data['key'] 有什么区别?
问题描述
请查看下面的代码片段,有三个演示,前两个演示工作正常(v-model 工作正常)。
但是对于最后一个,当您在 中输入内容时<input>
,您会看到this['test 1']
不会更新。<h2>Name:<span>{{this['test 1']}}</span></h2>
始终是初始值。
似乎v-model
为 .bin 绑定了一个克隆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>
解决方案
您不能this
在模板中使用,因为它不引用模板中的组件,因此$data
在这种情况下使用是必要的
推荐阅读
- javascript - 为什么我的 Javascript 循环只返回第一个值?
- javascript - 渲染运行两次
- c++ - 在没有小部件的情况下以编程方式使用 QCompleter
- python - 如何使用python打开触摸键盘?
- php - 将 $_SESSION 值和其他输入数据(选择)从 jQuery 传递到 saveindb.php 文件
- excel - VBA XML 返回
- javascript - 多级下拉 Bootstrap 4,子菜单与父下拉列表顶部对齐
- laravel - Laravel 路由组未正确使用
- python - 如何使用 rpy2 api 从 python 脚本中正确获取 R sessionInfo()?
- kotlin - Android-Things:将 gpiocallback 函数迁移到暂停协程函数