比较$ watch函数中的基元类型时出错

时间:2016-05-01 05:26:15

标签: javascript angularjs

您好我正在尝试更好地了解angularJs手表功能 为了做到这一点,我已经制作了以下文件夹enter link description here 其中包含一块手表。 当手表第一次正确执行时,我可以看到旧的和新的价值。 我第二次在输入框中输入数字和字符串时,我没有看到记录旧值和新值

$scope.$watch(function(theScope){

 console.log(typeof theScope.price ==='number'); //logs true
      if(typeof theScope.price ==='number'){

        return theScope;
      }else{
        return false
      }

    },function(oldValue,newValue){
      console.log('old:'+oldValue);
      console.log('new:'+newValue);
    });

2 个答案:

答案 0 :(得分:1)

一些事情。如果要在手表中使用函数语法,请按以下方式编写:

var app = angular.module('app',[]);
app.controller('MainController',['$scope',
  function($scope){
    $scope.message =20;
    $scope.$watch(function($scope){
 console.log(typeof $scope.message ==='number');
        return $scope.message;
    },function(oldValue,newValue){
      console.log('old:'+oldValue);
      console.log('new:'+newValue);
    });
  }
]);

此外,您在html中绑定了message,但您在手表中使用了price。此外,您使用的是theScope,它实际上并未用于别名$scope

将该代码粘贴到您的bin中,它应该可以正常工作。

答案 1 :(得分:0)

你可以$watch价格

$scope.$watch('price',function(oldValue,newValue){
  if(typeof newValue =='number'){
      console.log('old:'+oldValue);
      console.log('new:'+newValue);
    }
});

也将ng-model='message'更改为ng-model='price'

fiddle