我想从服务器获取对象,例如:
var User = $resource('/user/:userId', {userId:'@id'});
我希望User
个实例都有某些方法来计算派生数据,而服务器不必返回它。例如,说:
var aUser = User.get({userId: 43});
服务器返回类似:
的内容{id: 43, name: "Bob", alertTimestamp: 1447365544}
我希望能够做到这样的事情:
if (aUser.alertTimePassed()) {
// do stuff
}
有没有一种干净的方法可以做到这样的事情,这看起来很糟糕?
var alertTimePassed = function () {
var now = (new Date()).getTime() / 1000;
return now >= this.alertTimestamp;
};
var User = $resource('/user/:userId', {userId: '@id'}, {
get: {
method: "GET", url: '/user/:userId',
transformResponse: [angular.fromJson, function (obj) {
obj.alertTimePassed = alertTimePassed;
}]
}
});
答案 0 :(得分:0)
如果使用工厂创建$资源,则可以在从工厂返回之前修改$ resource对象。
app.factory('User', function ($resource) {
var User = $resource('/user/:userId', {userId: '@id'});
// add any methods here using prototype
User.prototype.alertTimePassed = function() {
// do stuff
};
return User;
});