【问题标题】:AngularJS: Return function based on input typeAngularJS:基于输入类型的返回函数
【发布时间】:2016-02-07 15:21:10
【问题描述】:

我的 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()
  };

看起来即使输入的是一个数字,一旦通过作用域,它无论如何都是一个字符串。有没有解决的办法?提前致谢!

【问题讨论】:

    标签: javascript html angularjs input scope


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      isNaN() return true 如果输入不是数字,这就是我在条件中添加 ! 的原因

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2019-06-07
          • 2019-12-19
          • 2019-10-29
          • 1970-01-01
          • 1970-01-01
          • 2020-05-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多