Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ember Starter Kit</title>
  <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/normalize/2.1.0/normalize.css">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
  <script src="http://builds.emberjs.com/canary/ember.debug.js"></script>
  <script src="http://builds.emberjs.com/canary/ember-template-compiler.js"></script>
</head>
<body>
  <div id='app'></div>
  <pre id="logs"></pre>
  
  <script type="text/x-handlebars">
    <h2>rwjblue's Ember JSBins</h2>
    
    {{input value=message}}
    <button {{action 'log' message}}>Log!</button>
    
    {{display-messages}}
  </script>
  <script type="text/x-handlebars" id="components/display-messages">
    <ul>
      {{#each messages as |message|}}
        <li>{{message}}</li>
      {{/each}}
    </ul>
  </script>
</body>
</html>
 
/* Put your CSS here */
html, body {
    margin: 20px;
}
 
var App = Ember.Application.create({
  rootElement: '#app',
  LOG_RESOLVER: true
});
App.Router.map(function() {
});
App.ApplicationRoute = Ember.Route.extend({
  logger: Ember.inject.service(),
  actions: {
    error: function(error) {
      log(error.message);
    },
    log(message) {
      this.get('logger').log(message);
    }
  }  
});
function generateEventedServiceFor(serviceName, events) {
  return Ember.Mixin.create({
    [serviceName]: Ember.inject.service(),
    init() {
      this._super(...arguments);
      let context = this;
      let service = this.get(serviceName);
      for (let key in events) {
        service.on(key, context, events[key]);
      }
    },
    destroy() {
      for (let key in events) {
        service.off(key, context, events[key]);
      }
      this._super(...arguments);
    }
  });
}
App.LoggerService = Ember.Service.extend(Ember.Evented, {
  log() {
    this.trigger('log', ...arguments);
  }
});
// used only for the component below, would normally be in that component's
// module directly
var EventedServiceMixin = generateEventedServiceFor('logger', {
  log: 'handleLogMessage'
});
App.DisplayMessagesComponent = Ember.Component.extend(EventedServiceMixin, {
  init() {
    this._super(...arguments);
    this.messages = [];
  },
  handleLogMessage(message) {
    this.messages.pushObject(message);
  }
})
//Ember.onerror = function(error) {
//  log(error.stack);
//};
function log() {
  var msg = [].slice.call(arguments).join(' ');
  logs.insertBefore(document.createTextNode("\n" + msg), logs.firstChild);
}
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
rwjbluepro
0viewers