简体   繁体   English

如何在控制器的ng-change中检测值null

[英]how to detect value null in ng-change in controller

here's my view 这是我的看法

md-input-container flex=""
        label Mynumber
        input type="number" ng-model="mynumber" ng-change="checkMynumber(mynumber)" step="0.01" ng-pattern="/^[0-9]+(\.[0-9]{1,2})?$/" string-to-number=""

my controller 我的控制器

$scope.checkMynumber = (number) =>
  if number?
    alert "true"
  else
    alert "false"

when i input my first number it alert True that was right but when i erase my inputed number it keeps alert True. 当我输入我的第一个数字时,它会警告True,这是正确的,但是当我擦除输入的数字时,它会保持警报True。 i want to alert false when my input type is null. 当我的输入类型为null时,我想警告false。

 $scope.checkMynumber = function (number) {
   if(number) {
     alert(true)
   } else {
     alert(false)
   }
  }

Check this fiddle https://jsfiddle.net/aswathyb950/9jfww52h/ 检查这个小提琴https://jsfiddle.net/aswathyb950/9jfww52h/

You can use 您可以使用

$scope.checkMynumber = function(number){ if (number!= null) alert "true" else alert "false" } $ scope.checkMynumber = function(number){如果(number!= null)警报“ true”,否则警报“ false”}

remove the ternary operator and stick with the if else conditions 删除三元运算符,并遵守if else条件

 angular.module("app",[]) .controller("ctrl",function($scope){ $scope.checkMynumber = function(number) { if (number) alert("true") else alert ("false") } }) 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="app" ng-controller="ctrl"> <input type="number" ng-model="mynumber" ng-change="checkMynumber(mynumber)" step="0.01" ng-pattern="/^[0-9]+(\\.[0-9]{1,2})?$/" string-to-number=""> </div> 

DEMO 演示

 var myApp = angular.module('myApp',[]); myApp.controller('MyCtrl', ['$scope', function($scope) { $scope.checkMynumber = function(number) { number ? alert("true") : alert("false"); } }]); 
 <div ng-app="myApp" ng-controller="MyCtrl"> <input type="number" ng-model="mynumber" ng-change="checkMynumber(mynumber)" step="0.01" ng-pattern="/^[0-9]+(\\.[0-9]{1,2})?$/" string-to-number=""> </div> 

因为我的指令是字符串到数字,谢谢大家,它现在可以工作了

I don't understand why almost every answer here is in .js instead .coffee, like in question.. anyway you can imporove your code 我不明白为什么这里几乎每个答案都是.js而不是.coffee,就像有问题的..无论如何,您都可以改进代码

  1. ng-model="mynumber" ng-change="checkMynumber(mynumber)" I guess mynumber is your scope variable, so why you are passing this to method? ng-model="mynumber" ng-change="checkMynumber(mynumber)"我想mynumber是您的范围变量,那么为什么要将它传递给方法? (I don't have full code, but you are using fat arrow there, otherwise I would find reason to pass this as argument) (我没有完整的代码,但是您在那儿使用粗箭头,否则我会找到理由将此作为参数传递)

  2. Your method checkMyNumber can be only like this: 您的方法checkMyNumber只能是这样的:

    $scope.checkMynumber = => alert $scope.mynumber? + ""

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM