作为参考,我使用的是Vue 2.0,Vuex和Firebase.
我正在使用v-html绑定构建一个contenteditable组件来呈现innerHTML.数据在KeyUp上更新.每当数据更新时,DOM元素都会刷新"new"数据,导致插入符/光标跳回到contenteditable div的开头.
我已经研究过Rangy和其他一些stackoverflow解决方案,但我觉得最简单的解决方案是从数据刷新中取消绑定DOM元素.我希望数据仍然在firebase中更新,但不会导致元素刷新.
有没有办法让我仍然使用v-html但阻止DOM元素刷新数据?或者有没有另一种方法来呈现HTML而不自动绑定?
编辑:11/18/16
所以我继续努力解决这个问题.这是我目前的想法.
如果有人知道任何结束生命周期的方法,停止重新渲染,或者从vue中获取React的"componentShouldRender"功能的方法,这应该足以解决这个问题.
-
更新:11/29/16
这个更新有点迟了.我在Github上用Vue 记录了一个功能请求.
问题讨论中有一些JSFiddles可以提供潜在的解决方案.然而,我认为他们都没有资格作为一个完整的解决方案.最有希望的一个最近产生了更多的问题.
所有这些问题都是添加componentShouldRender生命周期钩子的问题.我将继续寻找完整的解决方案
Vue 2.0
我有一个包含 div 的组件,该组件使用v-once指令来防止重新渲染。当 URL 参数更改时(即单击 vue-router 链接,更改组件中使用的 url 和参数),相同的组件会更新它显示的数据。
该组件成功地使用新数据(基于 URL 参数)重新呈现所有内容,除了带有v-once指令的 div 。该 div 不会刷新、重新加载或重新呈现。
我尝试在数据更改时使用观察者和vm.$forceUpdate(),但这没有任何效果。
有没有办法强制整个组件重新渲染?特别是v-once指令的部分?我希望组件在 URL 参数更改时重新呈现,但仍然不会在数据更改时重新呈现。