Skip to content

Instantly share code, notes, and snippets.

@geleto
Last active October 27, 2016 15:43
Show Gist options
  • Save geleto/f3e7002bf3b60472313b8f9c5963c7c4 to your computer and use it in GitHub Desktop.
Save geleto/f3e7002bf3b60472313b8f9c5963c7c4 to your computer and use it in GitHub Desktop.
Aurelia - change to a bound repeat input element is applied to the VM a second time after the element has been deleted.
<template>
<h3>Change any value except the first</h3>
<div repeat.for="i of messages.length">
<input type="text" value.bind="$parent.messages[i]" input.delegate="onMessageChanged()">
</div>
<h4>Notice how the change is also applied to an unrelated sibling element</h4>
</template>
export class App {
messages = ['Alpha','Bravo','Charlie','Delta','Echo','Foxtrot','Golf','Hotel'];
onMessageChanged(){
this.messages.splice(0,1);
console.log( 'deleted element #0, messages:'+this.messages );
window.setTimeout(()=>{
console.log( 'and a bit later, messages:'+this.messages );
},100);
}
}
<!doctype html>
<html>
<head>
<title>Aurelia</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body aurelia-app>
<h1>Loading...</h1>
<script src="https://jdanyow.github.io/rjs-bundle/node_modules/requirejs/require.js"></script>
<script src="https://jdanyow.github.io/rjs-bundle/config.js"></script>
<script src="https://jdanyow.github.io/rjs-bundle/bundles/aurelia.js"></script>
<script src="https://jdanyow.github.io/rjs-bundle/bundles/babel.js"></script>
<script>
require(['aurelia-bootstrapper']);
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment