nativescript-vue dataform 不更新源数据
nativescript-vue dataform does not update the source data
有人可以帮忙吗?
我有这个页面应用程序来显示问题:
如果您修改了一个字段然后在顶部按 'save' 更改的字段不会显示在控制台上...
<template>
<Page>
<ActionBar>
<Label text="SAVE" @tap="saveScreen()" />
</ActionBar>
<StackLayout>
<RadDataForm :source="person"/>
</StackLayout>
</Page>
</template>
<script>
export default {
data () {
return {
person: {
name: 'John',
age: 23,
email: 'john@company.com',
city: 'New York',
street: '5th Avenue',
streetNumber: 11,
},
};
},
methods: {
saveScreen() {
console.log('=======personName: ' + JSON.stringify(this.person))
}
}
}
</script>
<style>
</style>
我意识到这几乎是一个基本问题,我在互联网上搜索了答案但是找不到...
在此先感谢您的帮助。
问候,
汉斯
RadDataForm
使用起来有点棘手,因为它不会自动绑定数据,因此您必须添加一些事件才能获取更改的数据。
初始数据用于创建表单,更改数据保存到另一个对象,因此您可以收听 propertyCommitted
事件并获取 editedObject
.
<RadDataForm :source="person" @propertyCommitted="onPropertyCommitted" />
data() {
return {
person: {
name: "John",
age: 23,
email: "john@company.com",
city: "New York",
street: "5th Avenue",
streetNumber: 11
},
committedPerson: {}
};
},
methods: {
onPropertyCommitted (data) {
this.committedPerson = data.object.editedObject
},
saveScreen () {
console.log(this.committedPerson);
}
}
不知道这是否是在 Vue 中执行此操作的最佳方法,但我看到 github 上存在与此相关的未解决问题,并且发布了一些解决方法,但 none 用于 Vue。
官方文档应该有更好的解释。
这是工作示例https://play.nativescript.org/?template=play-vue&id=98Xyjv&v=5
在这里你可以找到一些关于验证、分组等的例子
https://github.com/telerik/nativescript-ui-samples-vue/tree/master/dataform/app/examples
这是我对此的回答。看看保存功能。
<StackLayout>
<StackLayout orientation="vertical" backgroundColor="lightgray">
<RadDataForm
id="myDataForm"
:source="record"
v-on:propertyCommitted="save"/>
</StackLayout>
<script>
import { mapState } from 'vuex'
import { getViewById } from "tns-core-modules/ui/core/view";
export default {
data() {}
},
methods:{
save(){
console.log('save')
let data = args.object
var dataform = getViewById(data, "myDataForm");
console.log(dataform.editedObject)//<--updated Data Here
},
}
computed: mapState({
record(state){
return record = this.$store.getters.record;
}
};
有人可以帮忙吗?
我有这个页面应用程序来显示问题:
如果您修改了一个字段然后在顶部按 'save' 更改的字段不会显示在控制台上...
<template>
<Page>
<ActionBar>
<Label text="SAVE" @tap="saveScreen()" />
</ActionBar>
<StackLayout>
<RadDataForm :source="person"/>
</StackLayout>
</Page>
</template>
<script>
export default {
data () {
return {
person: {
name: 'John',
age: 23,
email: 'john@company.com',
city: 'New York',
street: '5th Avenue',
streetNumber: 11,
},
};
},
methods: {
saveScreen() {
console.log('=======personName: ' + JSON.stringify(this.person))
}
}
}
</script>
<style>
</style>
我意识到这几乎是一个基本问题,我在互联网上搜索了答案但是找不到...
在此先感谢您的帮助。 问候, 汉斯
RadDataForm
使用起来有点棘手,因为它不会自动绑定数据,因此您必须添加一些事件才能获取更改的数据。
初始数据用于创建表单,更改数据保存到另一个对象,因此您可以收听 propertyCommitted
事件并获取 editedObject
.
<RadDataForm :source="person" @propertyCommitted="onPropertyCommitted" />
data() {
return {
person: {
name: "John",
age: 23,
email: "john@company.com",
city: "New York",
street: "5th Avenue",
streetNumber: 11
},
committedPerson: {}
};
},
methods: {
onPropertyCommitted (data) {
this.committedPerson = data.object.editedObject
},
saveScreen () {
console.log(this.committedPerson);
}
}
不知道这是否是在 Vue 中执行此操作的最佳方法,但我看到 github 上存在与此相关的未解决问题,并且发布了一些解决方法,但 none 用于 Vue。
官方文档应该有更好的解释。
这是工作示例https://play.nativescript.org/?template=play-vue&id=98Xyjv&v=5
在这里你可以找到一些关于验证、分组等的例子
https://github.com/telerik/nativescript-ui-samples-vue/tree/master/dataform/app/examples
这是我对此的回答。看看保存功能。
<StackLayout>
<StackLayout orientation="vertical" backgroundColor="lightgray">
<RadDataForm
id="myDataForm"
:source="record"
v-on:propertyCommitted="save"/>
</StackLayout>
<script>
import { mapState } from 'vuex'
import { getViewById } from "tns-core-modules/ui/core/view";
export default {
data() {}
},
methods:{
save(){
console.log('save')
let data = args.object
var dataform = getViewById(data, "myDataForm");
console.log(dataform.editedObject)//<--updated Data Here
},
}
computed: mapState({
record(state){
return record = this.$store.getters.record;
}
};