我的角度模型中有一个属性,需要在发送到服务器之前进行计算。我的控制器中有一个save()方法,它将模型发送到$ http服务以保存数据。它是这样的:
$scope.user.customerId = lookup($scope.user.userId);
lookup()
在本地数组中查找值的位置。 customerID值当前未在视图中使用,但服务器需要customerID。
我的问题是:围绕计算值是否有最佳做法?
这应该在$ watch中隐式地在对象getter中完成,还是应该在保存时在控制器或服务中完成?还有其他什么呢?
我感谢任何意见。
答案 0 :(得分:1)
服务是比控制器更好的选择,因为customerID
不会在视图中使用。
但如果customerID
仅在服务器上使用,我建议使用请求拦截器。您可以在official docs。
希望这会有所帮助:
module.factory('customerIdInterceptor', [function() {
var requestInterceptor = {
request: function(config) {
// request payload is in config.data
// calculate customerId and put it where you want it
}
};
return requestInterceptor;
}]);
module.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('customerIdInterceptor');
}]);