Javascript 我可以避免$scope.$watch返回未定义的值吗?

Javascript 我可以避免$scope.$watch返回未定义的值吗?,javascript,angularjs,Javascript,Angularjs,当我通过$scope.$watch观察角度范围变量时,它似乎只有在第一次调用watch函数时才是未定义的 是否可以重写我的代码以避免对未定义的进行不必要的检查 下面是一个简单的例子: (一) 2) HTML: 如果在视图模型中为关注的属性设置默认空值,则未定义的值不会出现问题 在您的情况下,在$scope.textLength初始化之前或之后添加此项(选中此项) 另一种避免未定义错误的方法是,可以将函数包装在hasOwnProperty if语句中 $scope.$watch('text',函

当我通过
$scope.$watch
观察角度范围变量时,它似乎只有在第一次调用watch函数时才是
未定义的

是否可以重写我的代码以避免对未定义的
进行不必要的检查

下面是一个简单的例子:

(一)

2) HTML:


如果在视图模型中为关注的属性设置默认空值,则
未定义的
值不会出现问题

在您的情况下,在
$scope.textLength
初始化之前或之后添加此项(选中此项)


另一种避免未定义错误的方法是,可以将函数包装在hasOwnProperty if语句中

$scope.$watch('text',函数(值){
if($scope.hasOwnProperty('text')){
如果(值的类型!==“未定义”){
$scope.textLength=value.length;
}否则{
$scope.textLength='观察到的值未定义';
}
});
}

};您可以初始化文本。
<div ng-app="MyApp">
   <div ng-controller="MyCtrl">Enter some text:
      <input type="text" ng-model="text" size="30" />
      <p>You entered: {{text}}</p>
      <p>Length: {{textLength}}</p>
   </div>
</div>
angular.module('MyApp', []).controller(
  'MyCtrl', function ($scope) {
    $scope.textLength = 0;
    $scope.$watch('text', function (value) {
      if (typeof value !== 'undefined') {
        $scope.textLength = value.length;
      } else {
        $scope.textLength = 'observed value is undefined';
      }
    });
});
$scope.text = '';