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/release/ember.debug.js"></script>
  <script src="http://builds.emberjs.com/release/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>
    
    Usage of `parse-int` with an argument: `{{type-of (parse-int '123')}}`
    <br/>
    Current: {{currentValue}} (type: {{type-of currentValue}})
    <br>
    {{one-way-input
      value=currentValue
       sanitizeInput=(parse-int)
       update=(action (mut currentValue))
     }}
  </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({
  actions: {
    error: function(error) {
      log(error.message);
    }
  }  
});
App.OneWayInputComponent = Ember.Component.extend({
  tagName: 'input',
  attributeBindings: [ 'type', 'value', 'placeholder', 'data-stripe', 'name' ],
  type: 'text',
  _sanitizedValue: undefined,
  input() { this._handleChangeEvent(); },
  change() { this._handleChangeEvent(); },
  
  _handleChangeEvent() {
    let value = this.readDOMAttr('value');
    this._processNewValue.call(this, value);
  },
  _processNewValue(rawValue) {
    let value = this.sanitizeInput(rawValue);
    if (this._sanitizedValue !== value) {
      this._sanitizedValue = value;
      this.attrs.update(value);
    }
  },
  sanitizeInput: function(input) {
    return input;
  },
  didReceiveAttrs: function() {
    if (!this.attrs.update) {
      throw new Error(`You must provide an \`update\` action to \`{{${this.templateName}}}\`.`);
    }
    this._processNewValue.call(this, this.get('value'));
  }
});
function toInteger(value) {
  let result = parseInt(value, 10);
    
  if (isNaN(result)) {
    return value;
  } else {
    return result;
  }  
}
App.ParseIntHelper = Ember.Helper.helper(function([item]) {
  if (item !== undefined) {
    return toInteger(item);
  } else {
    return toInteger;
  }
});
App.TypeOfHelper = Ember.Helper.helper(function([item]) {
  return typeof item;
})
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