// Use `reopen` to add a new property to `App.User`
App.User.reopen({
screamName: function() {
return this.get('name').toUpperCase() + "!";
}.property('name')
});
var fish = App.User.create({ name: 'Evil Trout' });
console.log(fish.get('screamName'));
// EVIL TROUT!
export default {
name: 'augment-user',
initialize: function(container, app) {
var User = container.lookupFactory('model:user');
User.reopen({ ... });
}
}
// Finds the currently instantiated Topic controller
container.lookup('controller:topic');
// Finds the class used to instantiate a model
container.lookupFactory('model:user');
var AwesomeResolver = Ember.DefaultResolver.extend({
resolveTemplate: function(parsedName) {
var awesomeName = "awesome/" +
parsedName.fullNameWithoutType;
return Ember.TEMPLATES[awesomeName] ||
this.super(parsedName);
}
});
// Wire it up
var App = Ember.Application.extend({
Resolver: AwesomeResolver
});
var patcher = Ember.TemplatePatcher;
patcher.add("061dd3942f735486fbc91b5c7dfcf7a6",
function(ast, hash, str) {
var toInject = "<p>hello world</p>";
patcher.insertAt(ast, "if if if-else if[2]",
toInject, {"shift": 1});
});
// post.hbs
<h1>{{title}}</h1>
{{view 'post-after-title'}}
// post-after-title.js
export default Em.ContainerView.extend();
container.lookupFactory('view:post-after-title').reopen({
addMyView: function() {
this.pushObject(Em.View.create({
templateName: 'my-template'
}));
}.on('didInsertElement')
});
// post.hbs {{plugin-outlet 'post-after-title}} // templates/connectors/post-after-title/add-byline.hbs By: {{author}}
var doughBoy = Ember.Object.create(Ember.Evented);
doughBoy.on('poke', function() {
console.log('hehe!');
});
doughBoy.trigger('poke');
app.register('app-events:main',
Ember.Object.extend(Ember.Evented),
{ singleton: true });
app.inject('controller', 'appEvents', 'app-events:main');
app.inject('route', 'appEvents', 'app-events:main');
app.inject('view', 'appEvents', 'app-events:main');
app.inject('model', 'appEvents', 'app-events:main');
// views/composer.js
this.appEvents.trigger('composerResized');
// views/progress-bar.js
var self = this;
this.appEvents.on('composerResized', function() {
self.reposition();
});