Sha256: f035d19afc2f140a56c00a0f232872b5e34a316e23ecced5cc41f4768d668475
Contents?: true
Size: 1.75 KB
Versions: 12
Compression:
Stored size: 1.75 KB
Contents
!(angular => { 'use strict'; function ModelBaseImports($q) { return class ModelBase { constructor(resource) { this._resource = resource; this.item = {}; } internalize(item) { if (item) { this.item = item; } else { this.item = {}; } } // higher order CRUD functions initItem(itemId) { if(itemId) { return this.fetch({ id: itemId }); } else { this.item = this._newItem(); return $q.when(this.item); } } save(params) { return this.isPersisted() ? this.update(_.merge(this.item, params)) : this.create(_.merge(this.item, params)); } // fundemental CRUD functions destroy() { return this._resource.destroy({ id: this.item.id }).$promise.then(item => item); } fetch(params) { return this._resource.show(params).$promise.then(i => { this.item = i; return this.item; }); } update(params) { return this._resource.update(params).$promise.then(i => { this.item = i; return this.item; }); } create(params) { return this._resource.create(params).$promise.then(i => { this.item = i; return this.item; }); } isPersisted() { return _.exists(this.item.id); } isNew() { return JSON.stringify(this.item) === JSON.stringify(this._newItem()); } // protected methods _newItem() { throw '#_newItem must be implemented in subclasses!'; } }; } ModelBaseImports.$inject = ['$q']; angular.module('models.modelBase', []).service('ModelBase', ModelBaseImports); }(angular));
Version data entries
12 entries across 6 versions & 1 rubygems