I have a service like this:
.factory('Car', function(Restangular) {
    var baseCars = Restangular.all('cars');
    Restangular.extendModel('cars', function(obj) {
        obj.extraMethod = function() { console.log('method added'); };
        return obj;
    });
    return {
        show: function(id) {
            return baseCars.one(id).get();
        }
    };
});
and a controller like this:
.controller('CarCtrl', function ($scope, $stateParams, Car) {
    Car.show($stateParams.id).then(function(car) {
        $scope.car = car;
        $scope.car.extraMethod();
    });
});
However, this results in an undefined is not a function error at $scope.car.newMethod().
Does anyone know why this is and how to get it to work?
Actually you are too close but you missing that when you write
Restangular.extendModel('cars', function(obj) {
    obj.extraMethod = function() { console.log('method added'); };
    return obj;
});
this only extend object with 'cars' route...
but your return object's route is whatever your id parameter...
try this code...
 factory('Car', function(Restangular) {
    Restangular.extendModel('cars', function(obj) {
        obj.extraMethod = function() { console.log('method added'); };
        return obj;
    });
    return {
        show: function(id) {
            return Restangular.one('cars', id).get();
        }
    };
  }
this time return object's route is cars and it will have extramethod()...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With