使用Restangulars extendModel添加的功能未定义?

acr*_*uui 6 angularjs restangular

我有这样的服务:

.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();
        }
    };
});
Run Code Online (Sandbox Code Playgroud)

和这样的控制器:

.controller('CarCtrl', function ($scope, $stateParams, Car) {

    Car.show($stateParams.id).then(function(car) {
        $scope.car = car;
        $scope.car.extraMethod();
    });
});
Run Code Online (Sandbox Code Playgroud)

但是,这会导致undefined is not a function错误$scope.car.newMethod().

有谁知道这是为什么以及如何让它工作?

Poy*_*maz 4

其实你离得太近了,但你写的时候却错过了

Restangular.extendModel('cars', function(obj) {
    obj.extraMethod = function() { console.log('method added'); };
    return obj;
});
Run Code Online (Sandbox Code Playgroud)

这只是用“汽车”路线扩展对象......

但你的返回对象的路线是你的 id 参数......

试试这个代码...

 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();
        }
    };
  }
Run Code Online (Sandbox Code Playgroud)

这次返回对象的路线是汽车,它将有extramethod()...