Skip to content

Instantly share code, notes, and snippets.

@rlivsey
Created April 3, 2012 17:39
Show Gist options
  • Save rlivsey/2293989 to your computer and use it in GitHub Desktop.
Save rlivsey/2293989 to your computer and use it in GitHub Desktop.
ember-data with filter
App = Ember.Application.create();
App.store = DS.Store.create({
adapter: DS.RESTAdapter.create()
})
App.set("room_id", 1);
App.Models = Ember.Namespace.create();
App.Mixins = Ember.Namespace.create();
App.Mixins.ChatMessage = Ember.Mixin.extend({
// common functionality here?
})
App.ChatMessage = Ember.Object.extend(App.Mixins.ChatMessage);
App.Models.ChatMessage = DS.Model.extend(App.Mixins.ChatMessage, {
contents: DS.attr("string"),
room_id: DS.attr("string")
})
App.chatMessages = Ember.ArrayController.create({
init: function() {
App.get("eventQueue").on("message-posted", _(this.messagePosted).bind(this));
},
roomChanged: function() {
this.set("content", []);
}.bind("App.room_id"),
messages: function() {
return App.get("serverChatMessages").concat(this.get("content"));
}.property("App.serverChatMessages", "content").cacheable(),
messagePosted: function(data) {
this.pushObject(App.ChatMessage.create(data));
},
postMessage: function(contents) {
var room_id = App.get("room_id");
var message = App.store.createRecord(App.Models.ChatMessage, {
contents: contents,
room_id: room_id
});
this.pushObject(message);
App.store.commit();
}
})
App.serverChatMessages = Ember.ArrayController.create({
init: function() {
this.loadData()
},
roomChanged: function() {
this.loadData()
}.observes("App.room_id"),
loadData: function() {
var room_id = App.get("room_id");
this.set("content", App.store.find(App.Models.ChatMessage, {room_id: room_id}))
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment