Created
January 4, 2015 19:02
-
-
Save fesor/85fbb308003990f1aaf1 to your computer and use it in GitHub Desktop.
js-model example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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