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

时间:2014-03-13 12:16:39

标签: 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();
        }
    };
});

和这样的控制器:

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

    Car.show($stateParams.id).then(function(car) {
        $scope.car = car;
        $scope.car.extraMethod();
    });
});

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

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

1 个答案:

答案 0 :(得分:4)

实际上你太近了但你错过了写作时

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

这只会使用' cars' 路线扩展对象......

但是你的返回对象的路由就是你的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();
        }
    };
  }

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