在我的应用程序中有两个文本框
<input type="text" ng-model="priceSlider.min" /><br/>
<input type="text" ng-model="priceSlider.max" /><br/>
我的angularjs控制器是:
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) ,如果显示为真,则来自if的值为5和300,但条件5> 300。 我无法找到为什么会这样。我正在做任何愚蠢的事吗?
请检查一下那个东西。
答案 0 :(得分:3)
当你比较5和300时你得到真实的原因可能是它正在进行字符串比较。
"5" > "300"
>> true
因此将值转换为整数然后进行比较。使用parseInt(val, 10)
或Number(val)