AngularJS:$ watch vs controller save()

时间:2014-07-22 14:09:19

标签: angularjs

我的角度模型中有一个属性,需要在发送到服务器之前进行计算。我的控制器中有一个save()方法,它将模型发送到$ http服务以保存数据。它是这样的:

$scope.user.customerId = lookup($scope.user.userId);

lookup()在本地数组中查找值的位置。 customerID值当前未在视图中使用,但服务器需要customerID。

我的问题是:围绕计算值是否有最佳做法?

这应该在$ watch中隐式地在对象getter中完成,还是应该在保存时在控制器或服务中完成?还有其他什么呢?

我感谢任何意见。

1 个答案:

答案 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');
}]);