2014-07-22 48 views
1

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

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

其中lookup()查找本地数组中的值。 customerID值目前在视图中根本不使用,但服务器需要customerID。

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

这应该在$ watch中隐式地在对象获取器中完成,还是应该在保存时完成,无论是在控制器还是在服务中?还有其他的东西吗?

我很欣赏任何输入。

+0

通常你不计算之类的客户ID的客户端 - 它是由你的数据库后端做服务器端,并通常会自动。一旦将对象添加到后端,您可以读取结果(包含客户ID),并在成功添加后将其分配给您的json对象。通常也许是 – pixelbits

+0

。然而,在这种情况下,我无法控制API。它发生了。 – user37078

回答

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