Skip to content

Instantly share code, notes, and snippets.

@zackthehuman
Created June 25, 2017 00:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zackthehuman/f7f51b7bf0c32d37b6abd59b439fd3f6 to your computer and use it in GitHub Desktop.
Save zackthehuman/f7f51b7bf0c32d37b6abd59b439fd3f6 to your computer and use it in GitHub Desktop.
Partial Helper
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
import Ember from 'ember';
const { htmlSafe } = Ember.String;
function PartialT(value, params = []) {
this.value = value;
this.params = params;
}
PartialT.prototype = htmlSafe('partial-t');
PartialT.prototype.toHTML = function() {
return this.value;
};
PartialT.prototype.toString = function() {
return this.value;
};
export default Ember.Helper.extend({
compute(params, hash) {
const keyOrPartial = params[0];
const callParams = params.slice(1);
let value = '';
if (typeof keyOrPartial === 'string') {
value = `key: ${keyOrPartial}`;
} else if (keyOrPartial instanceof PartialT) {
value = `partial: ${keyOrPartial}, params: [${keyOrPartial.params.concat(callParams).join(', ')}]`;
}
return new PartialT(`${value}`, callParams);
}
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{outlet}}
<p>{{my-helper "foobar"}}</p>
<p>{{my-helper (my-helper "barbaz")}}</p>
<p>{{my-helper (my-helper "quux" "inner") "outer"}}</p>
<br>
<br>
{
"version": "0.12.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "2.12.0",
"ember-template-compiler": "2.12.0",
"ember-testing": "2.12.0"
},
"addons": {
"ember-data": "2.12.1"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment