Skip to content

Instantly share code, notes, and snippets.

@sukima
Last active June 7, 2019 08:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sukima/25bad17ed582a4b7e2479c79a1f60f6f to your computer and use it in GitHub Desktop.
Save sukima/25bad17ed582a4b7e2479c79a1f60f6f to your computer and use it in GitHub Desktop.
ember-observer-causing-an-issue
import Component from '@ember/component';
import { computed } from '@ember/object';
export default Component.extend({
time: computed('datetime', function() {
let date = new Date(this.datetime);
return `${date.getHours()}:${date.getMinutes()}`;
}),
date: computed('datetime', function() {
let date = new Date(this.datetime);
return `${date.getMonth() + 1}/${date.getDay()}`;
}),
actions: {
updateTime(newTime) {
let [hour, minute] = newTime.split(':').map(v => parseInt(v));
if (!(hour && minute)) { return; }
let date = new Date(this.datetime);
date.setHours(hour);
date.setMinutes(minute);
this.update(date.toISOString());
},
updateDate(newDate) {
let [month, day] = newDate.split('/').map(v => parseInt(v));
if (!(month && day)) { return; }
let date = new Date(this.datetime);
date.setMonth(month - 1);
date.setDate(day);
this.update(date.toISOString());
},
updateToNow() {
let now = new Date();
this.update(now.toISOString());
}
}
});
import Ember from 'ember';
export default Ember.Controller.extend({
queryParams: ['exampleTime'],
exampleTime: new Date().toISOString()
});
<div>
<input
type="text"
value={{this.exampleTime}}
oninput={{action (mut this.exampleTime) value="target.value"}}
>
</div>
<DateTimeManager
@datetime={{this.exampleTime}}
@update={{action (mut this.exampleTime)}}
as |dt|
>
<div>
<input
type="text"
value={{dt.time}}
oninput={{action dt.updateTime value="target.value"}}
>
<input
type="text"
value={{dt.date}}
oninput={{action dt.updateDate value="target.value"}}
>
<button {{action dt.updateToNow}}>Insert Time</button>
</div>
</DateTimeManager>
{{yield (hash
time=this.time
date=this.date
updateTime=(action "updateTime")
updateDate=(action "updateDate")
updateToNow=(action "updateToNow")
)}}
{
"version": "0.15.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js",
"ember": "3.4.3",
"ember-template-compiler": "3.4.3",
"ember-testing": "3.4.3"
},
"addons": {
"ember-data": "3.4.2"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment