在我的应用程序中有两个文本框
<input type="text" ng-model="priceSlider.min" /><br/>
<input type="text" ng-model="priceSlider.max" /><br/>
我的 angularjs Controller 是:
app.controller('MainCtrl', function($scope) {
$scope.priceSlider = {};
$scope.priceSlider.min = 100;
$scope.priceSlider.max = 400;
$scope.priceSlider.ceil = 500;
$scope.priceSlider.floor = 0;
$scope.$watch('priceSlider.min',function(newVal,oldVal) {
if(isNaN($scope.priceSlider.min)) {
console.log('naan');
$scope.priceSlider.min=oldVal;
}
if($scope.priceSlider.min>$scope.priceSlider.max) {
console.log($scope.priceSlider.min>$scope.priceSlider.max);
console.log($scope.priceSlider.min+":"+$scope.priceSlider.max);
var t = $scope.priceSlider.min;
$scope.priceSlider.min = $scope.priceSlider.max;
$scope.priceSlider.max = t;
}
}
});
现在大多数时候 $watch 中的 if 条件工作正常,但在某些情况下会失败,例如:如果我在两个文本框中写下 200 和 300,然后选择第一个文本框并尝试更改(到 5) ,如果值为 5 和 300,但条件 5>300 如果显示 true... 我无法找到为什么会发生这种情况。我是不是做了什么蠢事
请检查plunker中的东西。
最佳答案
比较 5 和 300 时结果为 true 的原因可能是它正在进行字符串比较。
"5" > "300"
>> true
因此将值转换为整数然后进行比较。使用 parseInt(val, 10)
或 Number(val)
关于JavaScript 转换 - 为什么比较 "5"> "300"返回 true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32005885/