我正在考虑使用Angular开发SPA应用程序。
我们面临的挑战之一是,当用户在表单上输入值时,我们会进行大量基于财务的计算。这是一个简化的例子:
用户正在销售交易条目表单中输入明细行。 当他们输入净额时,系统应计算销售额 根据输入的净值计算的税额和总价值(正如我所说, 它确实比这复杂得多)。 这里需要注意的重要一点是,当用户选中“净值”字段时,他们应该会看到“税”和“总值”字段更新。
所以我在这里看到两个高级选项:
无论哪种方式,我都希望使用计算结果更新Angular样式模型,这将导致视图更新。
在可能的情况下,我更愿意通过服务调用来实现这一点,因为它打开了将来重新使用其他客户端逻辑的大门。我还认为在C#中编写这种逻辑应该更快开发和更易于维护(并将逻辑保存在一个地方)。
理想情况下,我希望在为事务建模的服务中的C#实体中使用此逻辑。
因此,我应如何调用此类服务器端逻辑?
或者我在这里完全没有其他方法或模式吗?
非常感谢
答案 0 :(得分:1)
我会创建一个API端点,它接收您需要的计算和值,并返回结果。这与从普通CRUD API获取单个记录相同,使您的角度服务非常简单:
angular.module('fin',[]).service('calculation', function($http) {
return {
getResult: function(calcMethod, values){
return $http({
url: 'http://backend.com/calculate',
method: 'GET',
params: {
calcMethod: calcMethod,
values: values
}
});
}
}
}
然后你可以从你的控制器打电话,就像这样:
Service.getResult('Sales Tax',[$scope.value1, $scope.value2]).success( function(res) {
$scope.result = res;
});
答案 1 :(得分:0)
我热爱javascript,我永远不会相信财务计算,特别是在客户端。
但是。这取决于你究竟需要什么来计算。我的意思是:
1)(你的情况)服务器给你"来源"价值(如用户数量等)和百分比(或用户输入),并且您不会将此数据传递给服务器,那么您肯定可以,而且我认为应该在客户端执行此操作。
2)如果你有价格和物品数量,你应该在服务器上计算它(你可以在UI上进行预先计算),但也可以从服务器确认。
答案 2 :(得分:0)
现在根据您提供的业务情景,似乎计算是这样的,您不希望别人知道它是如何完成的。计算最好保留在服务器端 如果您突出显示净额的字段,您可以致电服务器以获取销售税和您计算的其他值。
你可以这样经历。
您有计算销售税的方法。现在这需要净额。因此,当您输入净额并选择离开该字段时,您可以调用单个服务以获取销售税金额和总金额。在这里,您对服务的输入不是整个客户端,而只是与控制器绑定的净额。