discourse/app/assets/javascripts/discourse/models/model.js

43 lines
952 B
JavaScript

/**
A base object we can use to handle models in the Discourse client application.
@class Model
@extends Ember.Object
@uses Discourse.Presence
@namespace Discourse
@module Discourse
**/
Discourse.Model = Ember.Object.extend(Discourse.Presence, {
/**
Update our object from another object
@method mergeAttributes
@param {Object} attrs The attributes we want to merge with
**/
mergeAttributes: function(attrs) {
var self = this;
_.each(attrs, function(v, k) {
self.set(k, v);
});
}
});
Discourse.Model.reopenClass({
/**
Given an array of values, return them in a hash
@method extractByKey
@param {Object} collection The collection of values
@param {Object} klass The class to instantiate
**/
extractByKey: function(collection, klass) {
var retval = {};
_.each(collection, function(item) {
retval[item.id] = klass.create(item);
});
return retval;
}
});