I'm fairly new to Ember.
This is the code for my component:
import Ember from 'ember';
export default Ember.Component.extend({
profiles: Ember.inject.service(),
tagName: 'td',
classNames: ['grey'],
classNameBindings: ['unreadMessages'],
unreadMessages: null,
onInit: function() {
const id = this.get('conversation.id');
return this.get('profiles').getMessages(id)
.then(function(bool) {
this.set('unreadMessage', bool);
});
}.on('init')
});
This throws:
TypeError: Cannot read property 'set' of undefined
So I can gather that I don't have the this
context that I need to call this.set
inside of the .then()
I need to assign the result of return this.get('profiles').getMessages(id)
to the unreadMessages
property in my component. So that I can use it for the classNameBinding
.
Here is the method I'm calling from the service
getMessages(id){
return this.get('ajax').request('/messages?id=' + id)
.then((obj) => {
const unreadMessages = obj.messages.filter((e) => e.read === false);
if (unreadMessages === []) {
return false;
} else {
return true;
}
});
}
I've only been able to access the boolean value that getMessages returns inside of its .then()
and I am not able to call this.set()
inside of the .then()
I'm looking for a work around. I think I'm close and am struggling to due to my lack of experience with Ember.
getMessages
makes a 'GET'
request to my back end and filters through the messages to check if there are any that are unread and then returns true or false. The purpose of the classNameBinding
is to notify the user of whether they have any unread messages for that thread. This is a very simple email style messaging app that I am building for practice.
Thanks!
Aucun commentaire:
Enregistrer un commentaire