I think what you are looking for is plain old prototypal inheritance.
Create a function with your base functionality with the service eg
This is a very basic example but with a little modification it should work
for you.
function resourceHandler(MyResource, type) {
this.MyResource = MyResource;
this.type = type;
}
resourceHandler.prototype.getBaseFunctions = function() {
return {
findAll: function() {
this.MyResource.doGET(this.type);
}
};
}
app.factory('User', function(MyResource){
var handler = new resourceHandler(MyResource, 'users');
return handler.getBaseFunctions();
});
On 29 September 2014 17:58, César Barone <[email protected]> wrote:
> Hi James, thanks for your response.
>
> The exact part that i don't like is to repeat this code twice:
>
> *Company factory:*
> findAll: function() {
> MyResource.doGET('companies');
> }
>
> *User factory: *
> findAll: function() {
> MyResource.doGET('users');
> }
>
>
> I'm searching for a implementation that is similar to rails active record
> implementation, when i only extend ActiveModel and the common methods comes
> as bonus.
>
> Thanks :)
>
>
> 2014-09-29 12:17 GMT-03:00 James Cooke <[email protected]>:
>
>> Is it the parts like this that you don't like?
>> $scope.findUsers = function() {
>> User.findAll();
>> }
>>
>> This can be simplified to:
>> $scope.findUsers = User.findAll();
>>
>> You can do
>> $scope.userFactory = User;
>>
>> This means you only have to assign a few things to the view however your
>> view then has access to all of the User factory methods. If you don't like
>> that perhaps you can wrap up the find users functionality into a directive?
>> You don't have to assign anything to the view that way and the factories
>> are singletons so any changes in the User factory will be available in your
>> controllers and elsewhere too.
>>
>> --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "AngularJS" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/angular/63eLt6Kt_xE/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> To post to this group, send email to [email protected].
>> Visit this group at http://groups.google.com/group/angular.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "AngularJS" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/angular/63eLt6Kt_xE/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/angular.
> For more options, visit https://groups.google.com/d/optout.
>
--
You received this message because you are subscribed to the Google Groups
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.