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/3.0.1/normalize.css">
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  <script src="http://builds.emberjs.com/tags/v1.13.2/ember-template-compiler.js"></script>
  <script src="http://builds.emberjs.com/tags/v1.13.2/ember.debug.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">
    {{component-2 'my-foo' obj}}
    <button {{action 'setObj'}}>Set</button>
  </script>
  <script type="text/x-handlebars" data-template-name="components/my-foo">
  {{foo}}
  </script>  
</body>
</html>
 
/* Put your CSS here */
html, body {
  margin: 20px;
}
 
App = Ember.Application.create();
App.Router.map(function() {
  // put your routes here
});
App.IndexRoute = Ember.Route.extend({
  model: function() {
    return ['red', 'yellow', 'blue'];
  }
});
App.IndexController = Ember.Controller.extend({
  obj: {some: 'object', to: ['test', 'things'], foo: 'asd'},
  actions: {
    setObj: function(){
      this.set('obj.foo', 'ASD');
    }
  }
});
App.MyFooComponent = Ember.Component.extend({
  foo: 'foo',
});
//======= Hacky Time Starts From Here ====
var hashFromParameter;
var component = {
  setupState: function(lastState, env, scope, params, hash){
    var assign = Ember.__loader.require("ember-metal/merge").assign;
    
    var componentPath = env.hooks.getValue(params[0]);
    hashFromParameter = env.hooks.getValue(params[1]);
    return assign({}, lastState, { componentPath, isComponentHelper: true });
  },
  
  render: function(morph, env, scope, params, hash, template, inverse, visitor) {
  
    hash = env.hooks.getValue(params[1]);
console.log('render');
    env.hooks.keywords.component.render(morph, env, scope, params, hash, template, inverse, visitor);
  },
  rerender: function(morph, env, scope, params, hash, template, inverse, visitor) {
    hash = env.hooks.getValue(params[1]);
    console.log('rerender');
    env.hooks.keywords.component.render(morph, env, scope, params, hash, template, inverse, visitor);
  },
};
Ember.Application.initializer({
  name: 'register-keywords',
  initialize: function(){
    var registerKeyword = Ember.__loader.require("ember-htmlbars/keywords").registerKeyword;
    registerKeyword("component-2", component);
  }
});
Output

This bin was created anonymously and its free preview time has expired (learn why). — Get a free unrestricted account

Dismiss x
public
Bin info
anonymouspro
0viewers