AngularJS:基于输入类型的返回函数

时间:2016-02-07 15:21:11

标签: javascript html angularjs input scope

我的HTML文件中有一个输入框。如果用户输入一个数字,我想返回getZip(),如果用户输入一个字符串,我想返回getCity()。这可能与单个输入框有关,还是我需要为type =“text”指定一个,为type =“number”指定一个?

view.html:

<div ng-app="myApp" ng-controller="myCtrl">
  <form ng-submit="getData()">
  <input type="search" ng-model="location">
  <button>Get Weather</button>
</form>

myApp.js:

第一次尝试:

$scope.getData = function() {
  switch (angular.isString($scope.location)) {
    case true:
      return $scope.getCity();
      break;
    case false:
      return $scope.getZip();
      break;
    default:
      return "Location not recognized";
    };
  };

第二次尝试:

$scope.getData = function () {
  if (angular.isString($scope.location)) {
      return $scope.getCity() 
   } else {
      return $scope.getZip()
  };

似乎即使输入是一个数字,一旦它通过范围,它就是一个字符串,无论如何。有没有解决的办法?提前谢谢!

3 个答案:

答案 0 :(得分:1)

如果您尝试将输入与数值进行比较,则应将其解析为int:

if( !isNaN($scope.location) && parseInt($scope.location) == 1123) {
  alert('yes');
}

isNaN()如果输入不是数字,则返回true,这就是我将添加到条件

的原因

答案 1 :(得分:1)

您应该检查您的输入是否是数字,因为所有输入最初都是字符串类型:

if (!isNaN($scope.location)) {
    return $scope.getZip()
}
else {
    return $scope.getCity()
}

答案 2 :(得分:0)

尝试另一种方式,从angular.isNumber开始,字符串数字应该返回true但是带字母的字符串应该返回false