Library for creation data-oriented architecture of web applications.
$ npm install --save-dev statetree
AsyncData is a wrapper for objects that are often being updated, changed and synced.
var User = new AsyncData();
User._loaded // identificator that the object is loaded or not
User._updating // identificator that the object is updating or not
User._changed // identificator that the object has been changed locally (and is not saved)
User._old_value // contains old version of the object
User._error //
User._error_message //
getPromise
Returns a Promise object which you can use to know if the data has been loaded/updated.
User.getPromise().then(function() {
console.log(User.Name + 'has been updated');
})
_update
Calls resolve when data is received from the server, merges data.
User.setUpdating(function(apply, error, reject) {
$http
.post('/api/users', User)
.success(function() {
apply();
})
.error(function() {
reject();
error();
})
})
isChanged
Checks if the object has been changed locally.
if(User.isChanged()) console.log(User.Name + 'changed');
getChangedFields
Returns fields that have been changed locally.
User.setUpdating(function(apply, error, reject) {
$http
.post('/api/users', User.getChangedFields())
.success(function() {
apply();
})
.error(function() {
reject();
error();
})
})
revert
Revert old value
User.setUpdating(function(apply, error, reject) {
$http
.post('/api/users', User)
.success(function() {
apply();
})
.error(function() {
reject();
User.revert();
})
})