Skip to content

Instantly share code, notes, and snippets.

@fesor
Created January 4, 2015 19:02
Show Gist options
  • Save fesor/85fbb308003990f1aaf1 to your computer and use it in GitHub Desktop.
Save fesor/85fbb308003990f1aaf1 to your computer and use it in GitHub Desktop.
js-model example
angular.module('js-model', [])
.provider('jsModel', jsModelProvider)
.config(function (jsModelProvider) {
jsModelProvider
.register('Photo')
.register('User', function (Photo) {
return {
parsers: {
birth_day: jsModelProvider.parsers.date()
},
links: {
photos: jsModelProvider.links.many(Photo),
profile: jsModelProvider.links.one(Profile)
},
methods: {
isActive: function () {
return this.attributes.status === 'ACTIVE';
}
}
}
})
;
jsModelProvider.registerParser('custom', function (myService) {
return function (parserOptions) {
return function (val) {
return val;
}
}
})
})
// или вообще как вариант добавить еще один метод-обертку для $provider
// .model или .entity
// по аналогии с .factory позволяет регистрировать модель как сервис, инджектить сервисы и т.д.
// на счет этого не уверен...
.model('Foo', function (jsModel) {
// возвращается хэш-объект описывающий новую модель
return {
parsers: {
custom: function (val) {
return val.toLowerCase();
}
},
serializers: {
birth_day: jsModel.serializers.date()
}
}
})
.controller('UserCtrl', function (User) {
this.user = new User({
first_name: 'Sergey',
last_name: 'Protko',
birth_day: '1992-05-19'
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment