Skip to content

Instantly share code, notes, and snippets.

@zackthehuman
Last active March 21, 2016 18:18
Show Gist options
  • Save zackthehuman/8665db4434f7966f5e72 to your computer and use it in GitHub Desktop.
Save zackthehuman/8665db4434f7966f5e72 to your computer and use it in GitHub Desktop.
limiting properties
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
queryParams: {
'number': '_number'
},
_number: 1,
totalPages: 5,
number: Ember.computed('_number', {
get(key) {
return this.get('_number');
},
set(key, value) {
console.log('Setting', key, value);
const totalPages = this.get('totalPages');
if(value > totalPages) {
return totalPages;
}
if(!value || this.get('_number') < 1) {
return 1;
}
return value;
}
}),
actions: {
increment() {
this.incrementProperty('number');
},
decrement() {
this.decrementProperty('number');
}
}
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
{{outlet}}
{{#my-component number=number totalPages=totalPages}}{{/my-component}}
<button {{action "increment"}}>Increment</button>
<button {{action "decrement"}}>Decrement</button>
<br>
<br>
import Ember from 'ember';
export default Ember.Component.extend({
totalPages: 0,
number: 0
});
<p>Total Pages: {{totalPages}}</p>
<p>The number is: {{number}}</p>
{
"version": "0.6.5",
"EmberENV": {
"FEATURES": {}
},
"options": {
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.4.3/ember.debug.js",
"ember-data": "https://cdnjs.cloudflare.com/ajax/libs/ember-data.js/2.4.0/ember-data.js",
"ember-template-compiler": "https://cdnjs.cloudflare.com/ajax/libs/ember.js/2.4.3/ember-template-compiler.js"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment