mirror of
https://github.com/vuejs/vue.git
synced 2024-11-22 04:39:46 +00:00
58 lines
1.3 KiB
JavaScript
58 lines
1.3 KiB
JavaScript
var emailRE = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
|
|
|
|
// Setup Firebase
|
|
var config = {
|
|
apiKey: "AIzaSyAi_yuJciPXLFr_PYPeU3eTvtXf8jbJ8zw",
|
|
authDomain: "vue-demo-537e6.firebaseapp.com",
|
|
databaseURL: "https://vue-demo-537e6.firebaseio.com"
|
|
}
|
|
firebase.initializeApp(config)
|
|
|
|
var usersRef = firebase.database().ref('users')
|
|
|
|
// create Vue app
|
|
var app = new Vue({
|
|
// element to mount to
|
|
el: '#app',
|
|
// initial data
|
|
data: {
|
|
newUser: {
|
|
name: '',
|
|
email: ''
|
|
}
|
|
},
|
|
// firebase binding
|
|
// https://github.com/vuejs/vuefire
|
|
firebase: {
|
|
users: usersRef
|
|
},
|
|
// computed property for form validation state
|
|
computed: {
|
|
validation: function () {
|
|
return {
|
|
name: !!this.newUser.name.trim(),
|
|
email: emailRE.test(this.newUser.email)
|
|
}
|
|
},
|
|
isValid: function () {
|
|
var validation = this.validation
|
|
return Object.keys(validation).every(function (key) {
|
|
return validation[key]
|
|
})
|
|
}
|
|
},
|
|
// methods
|
|
methods: {
|
|
addUser: function () {
|
|
if (this.isValid) {
|
|
usersRef.push(this.newUser)
|
|
this.newUser.name = ''
|
|
this.newUser.email = ''
|
|
}
|
|
},
|
|
removeUser: function (user) {
|
|
usersRef.child(user['.key']).remove()
|
|
}
|
|
}
|
|
})
|