将所有<input />值设置为相同的东西乘以其他东西

时间:2015-01-04 21:12:57

标签: angularjs

我正在编写一个转换货币的小应用程序。此应用程序由多个输入字段组成,这些字段应相等,并乘以特定的速率。到目前为止,我一直在使用以下哪个有效

的index.html

<input type="number" ng-model="currencies.value"></input> //input field
<div>{{currencies.value * currency.rate}}</div> //output fields, many of these

app.js

app.controller('CurrencyController',function($scope){
    this.currencies = currencies;
    this.value = 1.00;
});

但是,这不是我想要做的。这个问题是,只使用了一个输入字段,而输出字段是div。我想要完成的是所有输入和输出字段都是如此(速率由循环预定义):

<input type="number" ng-model="currencies.value * currency.rate"></input> //input field
<input type="number" ng-model="currencies.value * currency.rate"></input> //output field, many of these

不幸的是,我无法弄清楚如何使用ng-model乘以输入字段的值,因为它只设置一个值,而不是一个函数。

我在这里遗漏了什么吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

使用ng-change(添加父母&#39;货币&#39;为良好做法建模&#39;)

<input type="number" ng-model="currency.input" ng-change="update('output', 'input', currency.rate)"/>
<input type="number" ng-model="currency.output" ng-change="update('input', 'output', 1/currency.rate)"/>

您的控制器应该看起来像

//Initialize the current object
$scope.currency = {
    input: 0,
    output: 0,
    rate: 1.5
}

$scope.update = function(newVal, val, rate){
    $scope.currency[newVal] = $scope.currency[val] * rate;
}

http://plnkr.co/edit/P1NGdvEuvfnqOGhx2OxP?p=preview