Edit in JSFiddle

<div id="app">
    <ul class="users">
        <li class="user" v-repeat="users" v-transition>
            <span>{{name}} - {{email}}</span>
            <button v-on="click:removeUser(this)">X</button>
        </li>
    </ul>
    <form id="form" v-on="submit:addUser">
        <input v-model="newUser.name | nameValidator | capitalize">
        <input v-model="newUser.email | emailValidator">
        <input type="submit" value="Add User">
    </form>
    <ul class="errors">
        <li v-show="!validation.name">Name cannot be empty.</li>
        <li v-show="!validation.email">Please provide a valid email address.</li>
    </ul>
</div>
var baseURL = 'https://vue-demo.firebaseIO.com/',
    Users   = new Firebase(baseURL + 'users'),
    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,}))$/

Users.on('child_added', function (snapshot) {
    var item = snapshot.val()
    item.id = snapshot.name()
    app.users.push(item)
})

Users.on('child_removed', function (snapshot) {
    var id = snapshot.name()
    app.users.some(function (user) {
        if (user.id === id) {
            app.users.remove(user)
            return true
        }
    })
})

var app = new Vue({
    el: '#app',
    filters: {
        nameValidator: function (val) {
            this.validation.name = !!val
            return val
        },
        emailValidator: function (val) {
            this.validation.email = emailRE.test(val)
            return val
        }
    },
    data: {
        users: [],
        newUser: {
            name: '',
            email: ''
        },
        validation: {
            name: false,
            email: false
        }
    },
    methods: {
        addUser: function (e) {
            e.preventDefault()
            console.log(this)
            if (this.validation.name && this.validation.email) {
                Users.push(this.newUser)
                this.newUser = {}
            }
        },
        removeUser: function (user) {
            new Firebase(baseURL + 'users/' + user.id).remove()
        }
    }
})
#app {
    font-family: 'Helvetica Neue', Arial, sans-serif;
    font-size: 13px;
    padding-left: 15px;
}
.users {
    padding: 0;
}
.user {
    height: 30px;
    line-height: 30px;
    padding: 10px;
    border-top: 1px solid #eee;
    overflow: hidden;
    transition: all .25s ease;
}
.user:first-child {
    border-top: none;
}
.user:last-child {
    border-bottom: 1px solid #eee;
}
.v-enter, .v-leave {
    height: 0;
    padding-top: 0;
    padding-bottom: 0;
    border-top-width: 0;
    border-bottom-width: 0;
}
.errors {
    color: #f00;
    padding-left: 1.5em;
}