Javascript 在VueJS上更新firebase值时具有奇怪行为的数据列表
当我试图更新firebase上的值时,数据列表上出现了一种非常奇怪的行为 我在这里放了一个代码示例: 这是我的VUEJ:Javascript 在VueJS上更新firebase值时具有奇怪行为的数据列表,javascript,firebase,firebase-realtime-database,vue.js,vuejs2,Javascript,Firebase,Firebase Realtime Database,Vue.js,Vuejs2,当我试图更新firebase上的值时,数据列表上出现了一种非常奇怪的行为 我在这里放了一个代码示例: 这是我的VUEJ: // Setup Firebase let config = { databaseURL: "https://test-stack-de2e3.firebaseio.com" }; let firebaseapp = firebase.initializeApp(config); let db = firebaseapp.database(); let postsR
// Setup Firebase
let config = {
databaseURL: "https://test-stack-de2e3.firebaseio.com"
};
let firebaseapp = firebase.initializeApp(config);
let db = firebaseapp.database();
let postsRef = db.ref('blog/posts')
// create Vue app
var app = new Vue({
// element to mount to
el: '#app',
// initial data
data: {
posts: [],
newPost: {
title: '',
content: '',
story: ''
}
},
// methods
methods: {
addPost: function () {
postsRef.push(this.newPost);
this.newPost.title = '';
this.newPost.content = '';
this.newPost.story = '';
},
editPost: function(post) {
// Set post values to form
this.newPost = post
},
updatePost: function(post) {
post.title = "changed"
const childKey = post['.key'];
/*
* Firebase doesn't accept speacial chars as value
* so delete `.key` property from the post
*/
delete post['.key'];
/*
* Set the updated post value
*/
this.$firebaseRefs.posts.child(childKey).set(post)
},
removePost: function (post) {
postsRef.child(post['.key']).remove()
toastr.success('Business removed successfully')
},
},
// Explicitly set binding data to firebase as an array.
created() {
this.$bindAsArray('posts', postsRef);
}
})
发生的情况是,每次按下编辑按钮时,我都会强制post.title的值更改为另一个值,然后在firebase上进行更新,但当我在第一个元素上执行此操作时,它也会更改列表中最后一个元素的值。因此,我需要重新加载页面以使其再次正确
有人知道是什么引起的吗 我也有同样的问题。但我认为这可以帮助你 这看起来很愚蠢,但对我有用
updatePost:function(post){this.$firebaseRefs.posts.child(post['.key']).child('title').set(post.title)
此.$firebaseRefs.posts.child(post['.key']).child('content').set(post.content)
此.$firebaseRefs.posts.child(post['.key']).child('story').set(post.story)
},
您必须使用文章的副本
editPost: function(post) {
// Set post values to form
// create a copy of the post
this.newPost = {...post}
},