Skip to content

Instantly share code, notes, and snippets.

@lstarky
Last active February 16, 2017 02:29
Show Gist options
  • Save lstarky/ac765dde74a30e009f4aba0f1acadcc5 to your computer and use it in GitHub Desktop.
Save lstarky/ac765dde74a30e009f4aba0f1acadcc5 to your computer and use it in GitHub Desktop.
Aurelia modify sidebar from router view (with compose)
<template>
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container-fluid">
<ul class="nav navbar-nav">
<li><a href="#/home">Home</a></li>
<li><a href="#/square">Square</a></li>
<li><a href="#/circle">Circle</a></li>
</ul>
</div>
</nav>
<br><br><br><br><br><br><br>
<div class="container">
<h1>Hello, ${fname}</h1>
<div class="well" if.bind="sidebarExtra">
<compose view.bind="sidebarExtra"></compose>
</div>
<hr>
<router-view></router-view>
</div>
</template>
export class App {
sidebarExtra = '';
constructor() {
this.fname = "Liam";
}
configureRouter(config, router) {
this.router = router;
config.title = 'Menu';
config.map([
{ route: ['', 'home'], name: 'home', moduleId: 'home' },
{ route: 'square', name: 'square', moduleId: 'square'},
{ route: 'circle', name: 'circle', moduleId: 'circle'}
]);
}
}
<template>
<h4>Circle details...</h4>
<ul>
<li>Circle 1</li>
<li>Circle 2</li>
<li>Circle 3</li>
</ul>
</template>
<template>
<h4>Circle Router View</h4>
<button class="btn btn-success" click.delegate="onClick()">Set text from Circle</button>
</template>
import {inject} from 'aurelia-framework';
import {App} from './app';
@inject(App)
export class Circle {
constructor(app) {
this.app = app;
}
onClick() {
this.app.fname = 'Circle';
this.app.sidebarExtra = 'circle-sidebar.html';
}
}
<template>
<h4>Home Router View!</h4>
<button class="btn btn-info" click.delegate="onClick()">Set text from Home</button>
</template>
import {inject} from 'aurelia-framework';
import {App} from './app';
@inject(App)
export class Home {
constructor(app) {
this.app = app;
}
onClick() {
this.app.fname = 'Home';
this.app.sidebarExtra = '';
}
}
<!doctype html>
<html>
<head>
<title>Aurelia</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
</head>
<body aurelia-app="main">
<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>
<!--<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>-->
</body>
</html>
export function configure(aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging();
aurelia.start().then(() => aurelia.setRoot());
}
<template>
<h4>Square details...</h4>
<ol>
<li>Square 1</li>
<li>Square 2</li>
<li>Square 3</li>
</ol>
</template>
<template>
<h4>Square Router View</h4>
<button class="btn btn-primary" click.delegate="onClick()">Set text from Square</button>
</template>
import {inject} from 'aurelia-framework';
import {App} from './app';
@inject(App)
export class Square {
constructor(app) {
this.app = app;
}
onClick() {
this.app.fname = 'Square';
this.app.sidebarExtra = 'square-sidebar.html';
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment