我有这样的服务:
.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()
错误。
有谁知道这是为什么以及如何让它发挥作用?
答案 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()
...