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.handlebarsjs.com.s3.amazonaws.com/handlebars-v2.0.0.js"></script>
  <script src="http://builds.emberjs.com/canary/ember.prod.js"></script>
  <script src="//cdnjs.cloudflare.com/ajax/libs/rxjs/2.3.22/rx.all.js"></script>
</head>
<body>
  <script type="text/x-handlebars">
    <h2>Welcome to Ember.js</h2>
    {{outlet}}
  </script>
  <script type="text/x-handlebars" data-template-name="index">
    Foo: {{ticks}} <br>
  </script>
</body>
</html>
 
/* Put your CSS here */
html, body {
  margin: 20px;
}
 
console.clear();
var Stream = Ember.__loader.require('ember-metal/streams/stream').default;
var streamUtils = Ember.__loader.require('ember-metal/streams/utils');
App = Ember.Application.create();
App.Router.map(function() {
  // put your routes here
});
App.IndexRoute = Ember.Route.extend({
  model: function() {
    return {};
  }
});
App.IndexController = Ember.ObjectController.extend({
  ticksBinding: new RxObservableStream(Rx.Observable.interval(1000)),
});
function RxObservableStream(observable) {
  this.subject = new Rx.BehaviorSubject(observable || Rx.Observable.empty());
  this.source = this.subject.switch();
}
RxObservableStream.prototype = Object.create(Stream.prototype);
RxObservableStream.prototype.constructor = RxObservableStream;
Ember.merge(RxObservableStream.prototype, {
  disposable: undefined,
  
  source: undefined,
  
  subject: undefined,
  
  valueFn: function() {
    if(!this.disposable) {
      this.disposable = this.source.forEach(this._onNext, this._onError, this._onCompleted);
    }
    
    return this.lastValue;
  },
  
  _onNext: function(value) {
    this.lastValue = value;
    this.notify();
  },
  
  _onError: function(err) {
    this.lastValue = null;
    console.error(err);
    this.notify();
  },
  
  _onCompleted: function() {
    //TODO: is this necessary?
    console.log('complete');
  },
  
  
  setSource: function(observable) {
    this.subject.onNext(observable);
  },
 
  setValue: function(){
    console.log('test');
  },
  
  _super$destroy: Stream.prototype.destroy,
  
  destroy: function(){
    if (this._super$destroy()) {
      if(this.disposable) {
        this.disposable.dispose();
      }
      
      if(this.subject) {
        this.subject.dispose();
      }
      
      this.disposable = undefined;
      this.source = undefined;
      this.subject = undefined;
      
      return true;
    }
  }
});
Output

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

Dismiss x
public
Bin info
bleshpro
0viewers