Skip to content

Instantly share code, notes, and snippets.

@iezer
Last active March 31, 2017 20:18
Show Gist options
  • Save iezer/77070ee23253a4303bbe1447edef6e46 to your computer and use it in GitHub Desktop.
Save iezer/77070ee23253a4303bbe1447edef6e46 to your computer and use it in GitHub Desktop.
Don't change model hook
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: 'none',
rootURL: config.rootURL
});
Router.map(function() {
this.route('object-proxy');
this.route('use-transition', { path: '/use-transition/:id' });
});
export default Router;
import Ember from 'ember';
export default Ember.Route.extend({
});
import Ember from 'ember';
export default Ember.Route.extend({
model() {
Ember.run.schedule('afterRender', () => {
this.controller.set('model', 'world');
const routeModel = this.modelFor('index');
this.controller.set('routeModel', routeModel);
});
return 'hello';
}
});
import Ember from 'ember';
export default Ember.Route.extend({
model() {
Ember.run.schedule('afterRender', () => {
this.controller.set('model.name', 'world');
window.route = this;
const routeModel = this.modelFor('objectProxy');
this.controller.set('routeModel', routeModel);
});
return Ember.ObjectProxy.create({
name: 'hello'
});
}
});
import Ember from 'ember';
export default Ember.Route.extend({
model() {
Ember.run.schedule('afterRender', () => {
this.transitionTo('use-transition', { name: 'world' });
Ember.run.schedule('afterRender', () => {
const routeModel = this.modelFor('useTransition');
this.controller.set('routeModel', routeModel);
});
});
return { name: 'hello' };
}
});
<ul>
<li>{{link-to 'Out of sync example' 'index'}}</li>
<li>{{link-to 'Use Object wrapper' 'object-proxy'}}</li>
<li>{{link-to 'Use transitionTo' 'use-transition' '1'}}</li>
</ul>
{{outlet}}
<h2>Out of Sync</h2>
<p>
Controller Model: {{model}}
</p>
<p>
Model For Route: {{routeModel}}
</p>
<code>
route.modelFor('index') is not in sync with controller.model
</code>
<p>
{{link-to 'See fix using Object Proxy' 'object-proxy'}}
</p>
<h2>Using Object Wrapper</h2>
<p>
Controller Model: {{model.name}}
</p>
<p>
Model For Route: {{routeModel.name}}
</p>
<code>
route.modelFor('object-proxy') is in sync
</code>
<h2>Using transitionTo</h2>
<p>
Controller Model: {{model.name}}
</p>
<p>
Model For Route: {{routeModel.name}}
</p>
<code>
route.modelFor('use-transition') is not in sync with controller.model
</code>
{
"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