app.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. 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,}))$/
  2. // Firebase ref
  3. var usersRef = new Firebase('https://vue-demo.firebaseIO.com/users')
  4. // create Vue app
  5. var app = new Vue({
  6. // element to mount to
  7. el: '#app',
  8. // initial data
  9. data: {
  10. newUser: {
  11. name: '',
  12. email: ''
  13. }
  14. },
  15. // firebase binding
  16. // https://github.com/vuejs/vuefire
  17. firebase: {
  18. users: usersRef
  19. },
  20. // computed property for form validation state
  21. computed: {
  22. validation: function () {
  23. return {
  24. name: !!this.newUser.name.trim(),
  25. email: emailRE.test(this.newUser.email)
  26. }
  27. },
  28. isValid: function () {
  29. var validation = this.validation
  30. return Object.keys(validation).every(function (key) {
  31. return validation[key]
  32. })
  33. }
  34. },
  35. // methods
  36. methods: {
  37. addUser: function () {
  38. if (this.isValid) {
  39. usersRef.push(this.newUser)
  40. this.newUser.name = ''
  41. this.newUser.email = ''
  42. }
  43. },
  44. removeUser: function (user) {
  45. usersRef.child(user['.key']).remove()
  46. }
  47. }
  48. })