在 angular js 中获取两个下拉值的平均值
Get the Average of Two drop down values in angular js
如果 selected 应该计算平均值并在文本字段中显示答案,我如何观察两个 select 框的模型(不使用 ng change):例如
HTML 我:
<select ng-model="box1" ng-options="item for item in boxA"></select>
控制器:
$scope.boxA=[1,2,3,4,5];
HTML二:
<select ng-model="box2" ng-options="item for item in boxB"></select>
控制器:
$scope.boxA=[6,7,8,9,10];
文本框:
<input type="text" ng-model="answer">
如果您不想使用 ng-change,我的建议是隔一段时间检查控制器中的值。
$interval(function() {
if($scope.box1 && $scope.box2) {
$scope.answer = (parseInt($scope.box1) + parseInt($scope.box2))/2
}
}, 1000);
为了更好更Angular的方式,您可以使用 $watchCollection 代替:
$scope.$watchCollection('[box1, box2]',function(newValues,oldValues){
console.log('Box1: '+newValues[0]+', Box2: '+newValues[1]);
$scope.answer = (parseInt(newValues[0]) + parseInt(newValues[1])/2; //(or replace 2 with newValues.length if you plan to add more models into watch and get an average of more;)
});
您可以通过以下方式观看 $scope.box1
和 $scope.box2
:
$scope.$watch('box1', function(value){
$scope.answer = calculateAverage(value, $scope.box2);
});
$scope.$watch('box2', function(value){
$scope.answer = calculateAverage(value, $scope.box1);
});
看看这个 fiddle 演示:http://jsfiddle.net/manzapanza/wm8s5vmz/1/
如果 selected 应该计算平均值并在文本字段中显示答案,我如何观察两个 select 框的模型(不使用 ng change):例如
HTML 我:
<select ng-model="box1" ng-options="item for item in boxA"></select>
控制器:
$scope.boxA=[1,2,3,4,5];
HTML二:
<select ng-model="box2" ng-options="item for item in boxB"></select>
控制器:
$scope.boxA=[6,7,8,9,10];
文本框:
<input type="text" ng-model="answer">
如果您不想使用 ng-change,我的建议是隔一段时间检查控制器中的值。
$interval(function() {
if($scope.box1 && $scope.box2) {
$scope.answer = (parseInt($scope.box1) + parseInt($scope.box2))/2
}
}, 1000);
为了更好更Angular的方式,您可以使用 $watchCollection 代替:
$scope.$watchCollection('[box1, box2]',function(newValues,oldValues){
console.log('Box1: '+newValues[0]+', Box2: '+newValues[1]);
$scope.answer = (parseInt(newValues[0]) + parseInt(newValues[1])/2; //(or replace 2 with newValues.length if you plan to add more models into watch and get an average of more;)
});
您可以通过以下方式观看 $scope.box1
和 $scope.box2
:
$scope.$watch('box1', function(value){
$scope.answer = calculateAverage(value, $scope.box2);
});
$scope.$watch('box2', function(value){
$scope.answer = calculateAverage(value, $scope.box1);
});
看看这个 fiddle 演示:http://jsfiddle.net/manzapanza/wm8s5vmz/1/