<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://builds.emberjs.com/handlebars-1.0.0.js"></script>
<script src="http://s3.amazonaws.com/machty/to_s3_uploads/ember-c8c4084b-8bd2-27fa-baca-5770dbd3f4c3.js"></script>
</head>
<body>
<p><a href="https://github.com/emberjs/ember.js/pull/3655">Relevant PR</a></p>
<script type="text/x-handlebars" data-template-name="application">
<h1>Application Template</h1>
{{outlet}}
<p>
{{link-to 'Articles' 'articles'}}
{{link-to 'Cause a failing transition' 'boom'}}
</p>
</script>
<script type="text/x-handlebars" data-template-name="index">
<h2>Index</h2>
</script>
<script type="text/x-handlebars" data-template-name="articles">
<h2>Articles</h2>
<ul>
{{#each}}
<li>{{title}}</li>
{{/each}}
</ul>
</script>
<script type="text/x-handlebars" data-template-name="application_error">
<h2>Top level application_error: {{msg}}</h2>
<p>
I get entered when route model promises reject,
`error` action bubbles to root, and no other
leafier substates can be found. Unlike "error",
I'll get entered if ApplicationRoute returns
a rejecting promise.
</p>
<p>
Notice how we're not rendered inside the application
template's outlet but as a top level view.
</p>
{{link-to 'Try Again' 'index'}}
</script>
<script type="text/x-handlebars" data-template-name="application_loading">
<h2>Top level application_loading</h2>
</script>
<script type="text/x-handlebars" data-template-name="loading">
<h2>Loading...</h2>
<p>
You'll see this when trying to enter ArticlesRoute,
because a more specific 'articles_loading' substate
wasn't found, whereas navigating to 'boom' will
cause 'boom_loading' substate to be entered instead
of this one, since a template has been defined for it.
</p>
</script>
<script type="text/x-handlebars" data-template-name="boom_loading">
<h2>I see that you are trying to enter BoomRoute</h2>
<p>
lemme know how that works out for you
</p>
</script>
<script type="text/x-handlebars" data-template-name="error">
<h2>Error</h2>
<p>
I'm rendered into 'application' template's outlet.
If you deleted this template (or changed its name to
something else), the "application_error" substate would
be entered, and "ApplicationView" would be torn down
</p>
{{link-to 'Back to Index' 'index'}}
</script>
</body>
</html>
App = Ember.Application.create();
App.Router.map(function() {
this.route('boom');
this.route('articles');
});
var rejectPromise = true;
App.ApplicationRoute = Ember.Route.extend({
model: function() {
if (rejectPromise) {
rejectPromise = false;
return new Ember.RSVP.Promise(function(resolve, reject) {
Ember.run.later(reject, {
msg: "ApplicationRoute#model returned rejecting promise"
}, 1000);
});
}
}
});
App.BoomRoute = Ember.Route.extend({
model: function() {
return new Ember.RSVP.Promise(function(resolve, reject) {
Ember.run.later(reject, {
msg: "BOOM"
}, 2000);
});
}
});
App.ArticlesRoute = Ember.Route.extend({
model: function() {
return new Ember.RSVP.Promise(function(resolve) {
Ember.run.later(resolve, [
{ title: "i am a title" },
{ title: "i am a title2" }
], 2000);
});
}
});
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |