javascript - $refs 会搞乱插值吗?

标签 javascript html vue.js

我正在学习这个 vue.js 类(class),作者明确表示通过 $refs 更改元素的 DOM 不会影响插值,事实上,直接对 DOM 进行的任何更改都将被插值覆盖(如果存在) .那不会发生。

尝试通过查询选择器而不是 $refs 来完成,结果相同。

    <div id="app11">
        <h1 ref="myHeading">{{ val }}</h1>
        <button @click="viaRefs">Change value via $refs to 5</button>
    </div>

const vm11 = new Vue({
    el: "#app11",
    data: {
        val: 0
    },
    methods: {
        viaRefs: function() {

            this.$refs.myHeading.innerText = 5;
        }
    }
});

setInterval(() => {
    vm11.val++;
}, 1000);

我希望这个标题中的文本在我点击按钮后显示 5 片刻,然后这个 setInterval 再次更改 val 并且 Vue.js 通过将标题的内部 HTML 更新为 val 当前值来使用react,就像它在那一刻所做的那样.但是,它卡在我直接给它的值上。我错过了什么?

最佳答案

这里的问题是当你设置 innerText ,您正在用一个新的替换 Vue 知道的 TextNode。您基本上失去了绑定(bind)。

在您的情况下,您可以通过将分配更改为:

this.$refs.myHeading.childNodes[0].data = 5;

通过此更改,单击按钮将导致您的 <h1>临时显示5 ,然后从停止的地方继续。

如果您打算将显示值“重置”为 5并从那里开始计数,那么你的作业应该处理 data直接属性,而不是通过 refs 的 innerHtml :

this.val = 5;

关于javascript - $refs 会搞乱插值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57661700/

相关文章:

javascript - npm 更新 Firebase 后无法登录

javascript - 是否可以在CF代码中使用console.log

javascript - Three.js CSS3DSprite 在 z 轴反射

javascript - 为选中的每个复选框添加和删除隐藏输入

javascript - jquery:使用两个带有两个字段(字段 1、字段 2 + 1 天)的日期选择器,例如 booking.com

javascript - div改变位置时有路径的概念吗?

javascript - 当 tool.mouseMove 事件开始时清除超时(PaperJs、VueJs)

javascript - Python 'is' 与 JavaScript ===

javascript - 从 HTML 文档中移除但不删除元素/变量

vue.js - vuex ajax调用和几个组件