Skip to content

Instantly share code, notes, and snippets.

@tim-evans
Created April 26, 2016 17:24
Show Gist options
  • Save tim-evans/f3870e3ef0eff9065e54984f521dac7f to your computer and use it in GitHub Desktop.
Save tim-evans/f3870e3ef0eff9065e54984f521dac7f to your computer and use it in GitHub Desktop.
binding-bug?
import Ember from 'ember';
const { get, set, computed } = Ember;
export default Ember.Component.extend({
value: computed({
get() {
return this.getValue();
},
set(_, value) {
this.setValue(value);
return this.getValue();
}
}),
getValue() {
if (this._value) {
return this._value;
}
return this.$('textarea').val();
},
setValue(value) {
if (value == null) { return; }
let $textarea = this.$() && this.$('textarea');
if ($textarea) {
if (value !== $textarea.val()) {
$textarea.val(value);
this.notifyPropertyChange('value');
this._value = null;
}
} else {
this._value = value;
}
},
actions: {
change() {
get(this, 'onchange')(this.$('textarea').val());
}
}
});
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
actions: {
set(key, value) {
this.set(key, value);
}
}
});
<button onclick={{action "set" "code" "A"}}>A</button>
<button onclick={{action "set" "code" "B"}}>B</button>
<button onclick={{action "set" "code" "C"}}>C</button>
{{ace-editor value=code onchange=(action 'set' 'code')}}
<textarea onchange={{action "change"}}>{{value}}</textarea>
{
"version": "0.7.2",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.3/jquery.js",
"ember": "1.13.13",
"ember-data": "https://cdnjs.cloudflare.com/ajax/libs/ember-data.js/2.4.3/ember-data.js",
"ember-template-compiler": "1.13.13"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment