javascript - 为什么 Vue.js 在通过 $refs 设置值后无法更新该值

标签 javascript html vue.js rendering

为什么回调函数完成执行后或单击“更改标题”按钮时标题不会在此处更改?

这是 Udemy VueJS 类(class)中的一个示例,它在视频中运行良好,但无论我尝试什么,我似乎都无法让它在我这边工作。我希望这个问题是可以理解的并且表述得当。

var vm1 = new Vue({
  el: '#app1',
  data: {
    title: 'The VueJS Instance',
  },
  methods: {
    updateTitle: function(title) {
      this.title = title;
    }
  }
});

vm1.$refs.heading.innerText = 'Something else';

setTimeout(function() {
  vm1.title = 'Changed by Timer';
}, 3000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.js"></script>


<div id="app1">
  <h1 ref="heading">{{ title }}</h1>
  <button v-on:click="updateTitle('a')" ref="myButton">Change title</button>
</div>

最佳答案

$refs 是非 react 性的,所以你不能用它做数据绑定(bind)。 查看文档 https://v2.vuejs.org/v2/api/#ref

如果你想用$refs改变值,你必须直接用属性引用它。

var vm1 = new Vue({
  el: '#app1',
  data: {
    title: 'The VueJS Instance',
  },
  methods: {
    updateTitle: function(title) {
      this.$refs.heading.innerText = title;
    }
  }
});

vm1.$refs.heading.innerText = 'Something else';
setTimeout(function() {
  vm1.$refs.heading.innerText = 'Changed by Timer';
}, 3000);
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.10/vue.js"></script>


<div id="app1">
  <h1 ref="heading">{{ title }}</h1>
  <button v-on:click="updateTitle('a')" ref="myButton">Change title</button>
</div>

关于javascript - 为什么 Vue.js 在通过 $refs 设置值后无法更新该值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58700490/

相关文章:

html - CSS 响应式内部 DIV 未调整为外部 DIV 宽度

vue.js - 在 Nuxt 中将多个新路径扩展到单个页面

javascript - 在javascript中, '\' 和 '\n' 有什么区别?

javascript - 你能给一个对象一个javascript中的键吗?

javascript - 为什么 JavaScript Sets/Maps 使用 `size` 而不是 `length` ?

typescript - Bootstrap Vue 阻止/取消事件

vue.js - 在去抖之前模拟加载旋转器

javascript - 颜色根据列出的数字发生变化

html - 在不丢失 3d 效果的情况下更改表单按钮样式

html - 使 flex 元素从下到上