Input Caret Position (solution)
import Ember from 'ember'; | |
export default Ember.Component.extend({ | |
edited: false, | |
actions: { | |
setText(text) { | |
this.set('edited', true); | |
let message = this.get('message'); | |
message = Ember.copy(message); | |
message.text = text; | |
let indexPath = this.get('indexPath'); | |
this.attrs.updateMessageAtIndexPath(message, indexPath); | |
} | |
} | |
}); |
import Ember from 'ember'; | |
export default Ember.Controller.extend({ | |
appName: 'Ember Twiddle', | |
model: null, | |
components: null, | |
init() { | |
this._super(...arguments); | |
this.set('model', [ | |
{ text: 'Lorem' }, | |
{ text: 'Ipsum' } | |
]); | |
this.set('components', []); | |
this.updateComponents(); | |
}, | |
updateComponents() { | |
let components = this.get('components'); | |
this.get('model').forEach((message, index) => { | |
let component = components.objectAt(index); | |
if (component) { | |
component.set('message', message); | |
} else { | |
components.pushObject({ | |
message: message | |
}); | |
} | |
}); | |
}, | |
title: Ember.computed('model.@each.text', function() { | |
return this.get('model').mapBy('text').join(' '); | |
}), | |
actions: { | |
updateMessageAtIndexPath(message, indexPath) { | |
let model = this.get('model'); | |
this.set('model', model.map(function(message, i) { | |
if (i === indexPath) { | |
return newMessage; | |
} else { | |
return message; | |
} | |
})); | |
this.updateComponents(); | |
} | |
} | |
}); |
{ | |
"version": "0.8.0", | |
"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.5.1", | |
"ember-data": "2.5.2", | |
"ember-template-compiler": "2.5.1" | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment