好的,我会尽力解释这个问题。我有一个ResourceInfo
组件,使用/resources/
将数据发布到/users/ + uid + /created-resources
路径和newPostKey
路径并更新。
我还有一个QuizBuilder
组件。我想将此组件中的数据发布到/resources/ + newPostKey + /quiz/
路径。但是,我不知道如何从newPostKey
组件ResourceInfo
中创建的特定路径获取QuizBuilder
或密钥。
以下是两个组成部分。首先,用户使用ResourceInfo
组件添加信息。一旦他们点击提交,他们就会转到他们创建测验的QuizBuilder
组件。
ResourceInfo.vue
export default {
name: 'resource-info',
data () {
return {
header: 'Before you build your quiz we just need some quick info.',
sharedState: store.state,
resource: {
type: '',
title: '',
url: '',
desc: '',
timesPassed: 0,
authorId: store.state.userInfo.uid,
authorName: store.state.userInfo.displayName,
authorImage: store.state.userInfo.photoURL
},
}
},
methods: {
saveToFirebase () {
var newPostKey = firebase.database().ref().child('resources').push().key;
var updates = {};
updates['/resources/' + newPostKey] = this.resource;
updates['/users/' + store.state.userInfo.uid + '/created-resources/' + newPostKey] = this.resource;
// Clear inputs
this.resource.title = '',
this.resource.type = '',
this.resource.desc = '',
this.resource.url = ''
console.log("Saving resource data...")
return firebase.database().ref().update(updates);
}
}
}
QuizBuilder.vue
export default {
name: "quiz-builder",
data () {
return {
questions: [createNewQuestion()],
showQuestions: false
}
},
methods: {
addQuestion () {
this.questions.push(createNewQuestion())
},
addOption (question) {
question.options.push(createNewOption())
},
saveToFirebase (e) {
e.preventDefault();
var questions = this.questions;
this.firebaseRef = db.ref('a/path/here'); // /resources/ + that resources id + /quiz/
this.firebaseRef.push({ // Should I use set or push here?
questions
})
console.log('Saving quiz data...')
}
}
}
答案 0 :(得分:1)
答案取决于组件/页面之间的转换方式。
key
,并让ResourceInfo使用生成的密钥发出自定义事件,以通知父项设置其密钥。见http://vuejs.org/guide/components.html#Using-v-on-with-Custom-Events。使用store.js
只需将key
存储在LocalStorage
(store.js
)中,并从其他组件中检索它应该有效,因为LocalStorage在全局甚至跨页/会话都可用。
有些人认为:main.js just be the parent
在某种意义上是正确的。这里没有真正的父vue组件,但是我们的main.js是由全局范围内的浏览器唤醒的,所以main.js是我们应用程序的根条目,也就是父类。 / p>