Skip to content

Instantly share code, notes, and snippets.

@eliranmal
Forked from geleto/app.html
Last active October 27, 2016 12:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save eliranmal/2219735648ffe73a3fe786575beb87d4 to your computer and use it in GitHub Desktop.
Save eliranmal/2219735648ffe73a3fe786575beb87d4 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>messages</h3>
<p>${messages.length}</p>
<p>${messages}</p>
<div repeat.for="i of messages.length">
<input type="text" value.bind="$parent.messages[i]" input.delegate="onMessageChanged(i)">
</div>
</template>
import { computedFrom } from 'aurelia-framework';
import {BindingEngine, inject} from 'aurelia-framework';
@inject(BindingEngine)
export class App {
constructor(bindingEngine) {
this.bindingEngine = bindingEngine;
this.messages = ['Alpha','Bravo','Charlie','Delta','Echo'];
}
bind () {
this.subscription = this.bindingEngine
.collectionObserver(this.messages)
.subscribe(this.messagesChanged);
}
unbind () {
this.subscription.dispose();
}
messagesChanged(...args) {
console.log('> messagesChanged!');
console.log(args);
}
onMessageChanged(i){
console.log('> onMessageChanged');
var message = this.messages[i];
console.log(message);
// this.filteredMessages[i] = message;
// this.filteredMessages = this.messages;
// for( var i=0; i<this.messages.length;i++ ){
// if(this.messages[i]==''){
// this.messages.splice(i,1);
// console.log( 'deleted element #'+i+', messages:'+this.messages );
// break;
// }
// }
// 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