使用AngularJS从服务器获取计算结果
Getting computation result from server with AngularJS
我实现了一个带有一组值的表单,例如可以逐步增加或减少的日期输入,以及一些行为相同的计数器。
每次我操作计数器时,都会计算这些输入的函数,并显示结果。我有两个选择:
- 当表单被操作时,使用AngularJS计算结果,当数据被发送到服务器时,再次重新计算。这意味着,我需要用Javascript编写函数,然后再用我用于API的任何语言编写
- 每次修改其中一个输入时,都会向服务器请求结果。例如,如果结果取决于数据库的状态,那么这可能是唯一可行的选择
如何实现第二个选项?我的初步方法是:
$scope.$watchGroup(['form.input1', 'form.input2', 'form.input3'], function() {
$scope.result = $scope.recalc();
});
$scope.recalc = function() {
$scope.evaluateRequest += 1;
$scope.result = null;
$http.post('/api/recalculation', {evaluate_request: $scope.evaluateRequest, input1: $scope.form.input1, input2: $scope.form.input2, input3: $scope.form.input3}).
success(function(data, status, headers, config) {
if ( data['evaluate_request'] != $scope.evaluateRequest )
return
$scope.result = data['result'];
}).
error(function(data, status, headers, config) {
console.log('ERROR');
});
};
也就是说,$watchGroup
是要走的路吗?
您不需要使用$watchGroupBy
,而$watch
在监视深层对象方面有更好的功能。
通过查看您的代码,我认为您不需要更改哪个值。只有当表单的某个值发生更改时,才需要调用$scope.recalc()
函数。
我建议使用$watch
,它将监视整个对象form
。任何值的变化,我们都会计算结果。
代码
$scope.$watch('form', function(newVal, oldVal) {
if(newVal != oldVal) { //value change then do calculation.
$scope.result = $scope.recalc();
}
},true);
提到true会监视整个对象(深层变量),任何更改都会调用then函数并相应地重新计算值。
希望这能对你有所帮助。谢谢
相关文章:
- if(foo!==null)的计算结果为true,即使foo为null
- ngIf的计算结果始终为true
- 设置为负数的变量计算结果为true
- 如何在模态助推器中显示计算结果(JS)
- 将javascript计算结果自动放入HTML表单中
- JavaScript/jQuery:格式化日期计算结果的最佳方式
- 使用AngularJS从服务器获取计算结果
- 如果ng-if的计算结果为false,AngularJS会使我的模型数据无效
- 计算结果Javascript中不同数字的数量
- javascript/html获胜't显示计算结果
- 使正数的计算结果为真,使负数计算为假
- Javascript 无法计算结果
- 为什么 {} == false 的计算结果为 false,而 [] == false 的计算结果为 true
- 以 HTML 格式显示计算结果 (javascript)
- 如果 x = 3 且 z 未分配,为什么 z = x-- - --x 的计算结果为 2
- 为什么 _=$=+[],++_+''+$ 的计算结果为 10
- 如何使用 ng-class 在值计算结果为零时删除类
- 为什么Number.MIN_VALUE < -1219312(或任何小值)的计算结果为 false
- 为什么空的 JavaScript 数组在条件结构中的计算结果为 true
- JavaScript 中的计算结果与 Java 中的计算结果不同