UNPKG

rizzo-next

Version:

The next generation of Lonely Planet's style guide and pattern library.

49 lines (43 loc) 931 B
import Events from "./mixins/events"; export default class Model { constructor({ url }) { this.url = url; } set(key, value) { if (typeof key === "object") { this.props = key; } else { let old = this.props[key]; this.props[key] = value; this.trigger(`change:${key}`, value, { old, value }); } this.trigger("change"); } get(key) { if (typeof key === "undefined") { return this.props; } else { return this.props[key]; } } parse(response) { return response; } fetch() { return new Promise((resolve, reject) => { $.ajax(this.url, { success: (response) => { this.set(this.parse(response)); resolve(this); }, error: (xhrObj, textStatus, error) => { reject(Error(error)); } }); }); } } Object.assign(Model.prototype, Events);