Vue.js 需要与计算属性相同的功能,但我需要能够在初始更改后更新数据
在这种情况下,当数据检测到状态变化时,我需要更新数据。用户需要能够在文本区域内进一步更改此信息。使用computed properties完全按照我想要的方式拉入数据,但是用户在此之后所做的任何更改都会被覆盖,因为computed property会不断将此数据更改回其初始值。最初在状态更改时拉入数据,但随后允许在此之后进行编辑的最佳方式是什么 谢谢 编辑:更新到我为@Libby所做的尝试Vue.js 需要与计算属性相同的功能,但我需要能够在初始更改后更新数据,vue.js,vuejs2,vuex,Vue.js,Vuejs2,Vuex,在这种情况下,当数据检测到状态变化时,我需要更新数据。用户需要能够在文本区域内进一步更改此信息。使用computed properties完全按照我想要的方式拉入数据,但是用户在此之后所做的任何更改都会被覆盖,因为computed property会不断将此数据更改回其初始值。最初在状态更改时拉入数据,但随后允许在此之后进行编辑的最佳方式是什么 谢谢 编辑:更新到我为@Libby所做的尝试 <textarea v-model="exampleData"></textarea&g
<textarea v-model="exampleData"></textarea>
computed: {
...mapGetters({
item: 'item'
})
methods: {
exampleFunction() {
this.exampleData = this.item;
}
mounted() {
this.exampleFunction();
}
计算:{
…地图绘制者({
项目:“项目”
})
方法:{
示例函数(){
this.exampleData=this.item;
}
安装的(){
这个.exampleFunction();
}
如果在数据中设置属性,则可以在挂载的
中初始化属性,该属性在加载页面时仅运行一次:
data:
text: null
mounted: ->
text = "This text is initialized"
然后在文本区域设置v-model
<textarea v-model="text"></textarea>
因此,textarea
的值将以“This text is initialized”(此文本已初始化)开始,但用户将能够更改它,并且这些更改将保存在text
中。如果在data
中设置属性,则可以在mounted
中初始化它,该属性在加载页面时仅运行一次:
data:
text: null
mounted: ->
text = "This text is initialized"
然后在文本区域设置v-model
<textarea v-model="text"></textarea>
因此,textarea
的值将以“此文本已初始化”开始,但用户可以对其进行更改,并且这些更改将保存在text
更新exampleData
中的项目的监视程序中:
watch: {
item(value) {
this.exampleData = value;
}
}
通过这种方式,您可以将示例数据
绑定到文本字段,但对项
的更改仍然会影响它
如果您想将exampleData
初始设置为项的值
,请在组件的挂载挂钩中执行此操作:
mounted() {
this.exampleData = this.item;
}
更新项目的观察者中的示例数据
:
watch: {
item(value) {
this.exampleData = value;
}
}
通过这种方式,您可以将示例数据
绑定到文本字段,但对项
的更改仍然会影响它
如果您想将exampleData
初始设置为项的值
,请在组件的挂载挂钩中执行此操作:
mounted() {
this.exampleData = this.item;
}
Vue已经有了一个内置的解决方案来处理这个问题,如果您使用getter/setter语法
因此,当您的状态更改时,您可以通过为计算机属性指定一个值来更新该属性:
// state has changed in text area handler
this.fullName = 'new value'
如果您将getter/setter语法用于
因此,当您的状态更改时,您可以通过为计算机属性指定一个值来更新该属性:
// state has changed in text area handler
this.fullName = 'new value'
我尝试过这个,但似乎挂载函数在组件“获取”之前运行挂载函数需要正确设置本地数据的状态对象,我做错了什么吗?有没有办法告诉它,让它等到正确的信息可用后再执行?挂载的函数应该在对象在数据中声明后运行。你能显示你的代码吗?我更新了原始帖子to在尝试使用mounted时向您展示我的逻辑。这对我来说并没有起到我所认为的作用,computed将正确执行,但是我无法更改textarea中存储的数据(通过v-model)因为它总是会返回到计算属性返回的内容。我尝试了这个方法,但似乎挂载的函数在组件“获取”之前运行挂载函数需要正确设置本地数据的状态对象,我做错了什么吗?有没有办法告诉它,让它等到正确的信息可用后再执行?挂载的函数应该在对象在数据中声明后运行。你能显示你的代码吗?我更新了原始帖子to在尝试使用mounted时向您展示我的逻辑。这对我来说并没有起到我所认为的作用,computed将正确执行,但是我无法更改textarea中存储的数据(通过v-model)由于它总是返回到计算属性返回的内容。这似乎工作正常,我必须研究文档以真正了解它在后台是如何工作的,但它似乎在查找对项的任何更改,然后运行一次函数,之后所做的任何更改都不会重新运行,因为项是taying一样。谢谢你的帮助。我最初的观察程序运行良好,我在一个单独的组件中设置了另一个观察程序,观察一个单独的数据点,但第二个没有触发,在多个组件中使用多个观察程序有什么诀窍吗?这似乎工作正常,我必须研究文档才能真正理解这是如何工作的ks在引擎盖下,它似乎在寻找对项目的任何更改,然后运行一次函数,然后由于项目保持不变而不重新运行之后所做的任何更改。感谢您的帮助。我的初始监视程序工作正常,我在一个单独的组件中设置了另一个监视单独的数据点,但第二个没有装配,在多个组件中使用多个观察者有什么诀窍吗?