Skip to content

Instantly share code, notes, and snippets.

@djedi
Last active April 6, 2017 17:10
Show Gist options
  • Save djedi/d1a702fcd501c6140bb8c1f3c53e7489 to your computer and use it in GitHub Desktop.
Save djedi/d1a702fcd501c6140bb8c1f3c53e7489 to your computer and use it in GitHub Desktop.
collection observer vs observable
<template>
<button click.delegate="addData()">Add Data</button>
<hr>
Data:
<table>
<tr repeat.for="val of data">
<td>${val}</td>
</tr>
</table>
</template>
import {BindingEngine, inject, observable} from 'aurelia-framework';
@inject(BindingEngine)
export class App {
@observable data2 = [];
constructor(bindingEngine) {
this.bindingEngine = bindingEngine;
this.data = [];
}
attached() {
this.subscription = this.bindingEngine.collectionObserver(this.data).subscribe(this.dataChanged);
}
detached() {
this.subscription.dispose();
}
dataChanged(splices) {
console.debug('dataChanged', splices);
}
data2Changed(newVal) {
console.debug('data2Changed', newVal);
}
addData() {
this.data.push(new Date());
this.data2.push(new Date());
}
}
<!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