diff --git a/resources/vue/components/MemcachedCacheConfig.vue b/resources/vue/components/MemcachedCacheConfig.vue
index c2e46632f2372121a10082a748a94b5206793af0..e684f0da6e6c3f2d5cfd4ae052eb0b9905759b30 100644
--- a/resources/vue/components/MemcachedCacheConfig.vue
+++ b/resources/vue/components/MemcachedCacheConfig.vue
@@ -3,33 +3,37 @@
         <article v-for="(server, index) in serverConfig" :key="index" class="memcached-server">
             <header>
                 <h3>
-                    <translate>Memcached-Server</translate> {{ index + 1 }}
-                    <studip-icon shape="trash" class="remove-server" @click.prevent="removeServer($event, index)"
+                    {{ $gettext('Memcached-Server') }} {{ index + 1 }}
+                    <studip-icon shape="trash" class="remove-server"
+                                 @click.prevent="removeServer(index)"
                                  :size="24"></studip-icon>
                 </h3>
             </header>
             <section class="col-4">
-                <label :for="'hostname-' + index">
-                    <translate>Hostname</translate>
+                <label>
+                    {{ $gettext('Hostname') }}
+                    <input type="text"
+                           :name="`servers[${index}][hostname]`"
+                           placeholder="localhost"
+                           v-model.trim="server.hostname">
                 </label>
-                <input type="text" :name="'servers[' + index + '][hostname]'" :id="'hostname-' + index"
-                       placeholder="localhost" :value="server.hostname">
             </section>
             <section class="col-2">
-                <label :for="'port-' + index">
-                    <translate>Port</translate>
+                <label>
+                    {{ $gettext('Port') }}
+                    <input type="text"
+                           :name="`servers[${index}][port]`"
+                           placeholder="11211"
+                           v-model.number="server.port">
                 </label>
-                <input type="text" :name="'servers[' + index + '][port]'" :id="'port-' + index"
-                       placeholder="11211" :value="server.port">
             </section>
         </article>
-        <label class="add-server" @click="addServer">
+        <label class="add-server" @click="addServer()">
             <studip-icon shape="add" :size="20"></studip-icon>
-            <translate>Server hinzufügen</translate>
+            {{ $gettext('Server hinzufügen') }}
         </label>
     </div>
 </template>
-
 <script>
 export default {
     name: 'MemcachedCacheConfig',
@@ -41,17 +45,19 @@ export default {
     },
     data () {
         return {
-            serverConfig: this.servers
+            serverConfig: this.servers.concat([])
         }
     },
     methods: {
         addServer () {
             this.serverConfig.push({ hostname: 'localhost', port: 11211 })
         },
-        removeServer (event, index) {
+        removeServer (index) {
             this.serverConfig.splice(index, 1)
-        },
-        isValid () {
+        }
+    },
+    computed: {
+        isValid() {
             return this.serverConfig.length > 0
                 && this.serverConfig.every(server => {
                     return server.hostname.length > 0
@@ -60,16 +66,16 @@ export default {
         }
     },
     watch: {
-        servers: {
-            handler (current) {
-                this.$emit('is-valid', this.isValid());
+        serverConfig: {
+            handler () {
+                this.$emit('is-valid', this.isValid);
             },
+            deep: true,
             immediate: true
         }
     }
 }
 </script>
-
 <style lang="scss" scoped>
 .memcached-server {
     .remove-server {