在输入中存储AngularJS表达式结果

Storing AngularJS expression result in input

本文关键字:表达式 结果 AngularJS 存储 输入      更新时间:2023-09-26

正如您从下面看到的,我在一个输入中计算一个表达式{{ annualIncome * 4.5 }},并在另一输入中重新计算同一表达式,而不是存储表达式的结果并将其传递给另一个输入,因为我不确定如何执行此操作。

示例:

%label Equity Loan ({{ selectedLocation.loan }}%):
%input#equity_loan{ "disabled" => "disabled", "value" => "{{ selectedLocation.mortgage === 55 ? ((annualIncome * 4.5) / 11) * 9 : ((annualIncome * 4.5) / 15) * 4 }}" }
%label Mortgage ({{ selectedLocation.mortgage }}%):
%input#mortgage{ "disabled" => "disabled", "value" => "{{  annualIncome * 4.5 }}" }

我试过ng模型,但似乎不起作用。

此外,我曾试图通过在表达式末尾添加"|currency"来将值更改为货币,但也没有成功,但我猜这可能是因为我需要转换每个表达式的结果?

好吧,你不能在角度表达式中使用变量,但你可以在年收入变量改变后在控制器中使用;在您的视图中使用CCD_ 2语句绑定到。

为了在更改值后计算值,您可以在您的范围内设置一个手表。每次更新值时都会调用该函数。如果你想添加延迟而不是立即计算,你可以使用ng模型选项中的去抖动选项;示例:

%input{"ng-model-options" => "{debounce: { 'default': 500, 'blur': 0 }}"}

然后,它只是一种使用变量构建代码的方法。

$scope.$watch('annualIncome', function(value, oldValue) {
  var annualIncome = value; // same as $scope.annualIncome
  var parts = selectedLocation.mortgage === 55 ? 11 : 15;
  var factor = selectedLocation.mortgage === 55 ? 9 : 4;
  var annualValue = annualIncome * 4.5;
  $scope.result = {
    propertyValue: annualValue + (annualValue / parts) + ((annualValue / parts) * factor),
    deposit: annualValue / parts
    // and so on..
  };
});

由于结果变量是在作用域上设置的,因此可以使用属性绑定在视图中绑定到它。

%input#property_value{ "disabled" => "disabled", "value" => "{{ result.propertyValue }}" }