Skip to content

Instantly share code, notes, and snippets.

@nightire
Created November 15, 2016 08:28
Show Gist options
  • Save nightire/2f8fe302ae2518f1fee8df5da317d7a8 to your computer and use it in GitHub Desktop.
Save nightire/2f8fe302ae2518f1fee8df5da317d7a8 to your computer and use it in GitHub Desktop.
Observation in a hidden controller
import Route from 'ember-route';
export default Route.extend({
activate() {
document.body.classList.add('standard');
}
});
<header class="container-fluid">
<h1>Ember Sandbox</h1>
</header>
<hr>
<main class="container-fluid">
{{outlet}}
</main>
import Controller from 'ember-controller';
import inject from 'ember-service/inject';
import { reads } from 'ember-computed';
import get from 'ember-metal/get';
export default Controller.extend({
shared: inject(),
newValue: reads('shared.baz'),
actions: {
changeSharedBaz() {
get(this, 'shared').setBaz(get(this, 'newValue'))
}
}
});
{{link-to "返回 Index" "index"}}
<p>
{{input value=newValue}}
<button type="button" onclick={{action "changeSharedBaz"}}>改变 Baz</button>
</p>
import Controller from 'ember-controller';
import inject from 'ember-service/inject';
import observer from 'ember-metal/observer';
import get from 'ember-metal/get';
export default Controller.extend({
shared: inject(),
bazChanged: observer('shared.baz', function() {
alert(get(this, 'shared.baz'))
})
});
{{link-to "返回 Index" "index"}}
<p>
{{shared.baz}}
</p>
import Controller from 'ember-controller';
import get from 'ember-metal/get';
import set from 'ember-metal/set';
export default Controller.extend({
});
import Route from 'ember-route';
export default Route.extend({
});
<p>
首先激活 <code>FooController</code>
{{link-to "Go Foo" "foo"}}
</p>
<p>
然后进入 <code>BarController</code>
{{link-to "Go Bar" "bar"}}
</p>
import Ember from 'ember';
import config from './config/environment';
const Router = Ember.Router.extend({
location: 'none',
rootURL: config.rootURL
});
Router.map(function() {
this.route('foo')
this.route('bar')
});
export default Router;
import Service from 'ember-service';
import get from 'ember-metal/get';
import set from 'ember-metal/set';
export default Service.extend({
baz: '',
getBaz() {
return get(this, 'baz')
},
setBaz(value) {
set(this, 'baz', value)
}
});
*, *::before, &::after {
box-sizing: border-box;
}
{
"version": "0.10.5",
"EmberENV": {
"FEATURES": {},
"EXTEND_PROTOTYPES": true
},
"options": {
"use_pods": true,
"enable-testing": false
},
"dependencies": {
"jquery": "//cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js",
"hack": "//cdnjs.cloudflare.com/ajax/libs/hack/0.7.7/hack.css",
"standard": "//cdnjs.cloudflare.com/ajax/libs/hack/0.7.7/standard.css",
"ember": "2.9.0",
"ember-data": "2.9.0",
"ember-template-compiler": "2.9.0",
"ember-testing": "2.9.0"
},
"addons": {
"ember-composable-helpers": "*",
"ember-route-action-helper": "*",
"ember-truth-helpers": "*"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment