两个变量和明确的责任或一个变量与铸造?

Two variables and clear responsibilities or one variable with casting?

请告诉我以下两种方法中哪一种更清晰有用,可以显示和隐藏带有 ng-show 的文本。

代码 1:

控制器:

$scope.text = false;

if (error) {
  $scope.text = "Error message";
} else {
  $scope.text = false;
}

查看:

<div ng-show="!!text"> {{text}} </div>

代码 2:

控制器:

$scope.flag = false;
if (error) {
  $scope.flag = true;
  $scope.text = "Error message";
} else {
  $scope.flag = false;
}

查看:

<div ng-show="flag">{{text}}</div>

哪个代码更简单易懂?

在代码 2 中,我可以省略 else 块,因此控制器看起来像:

 if ( error ) {
     $scope.flag = true;
     $scope.text = "Error message";
 }

==编辑2 代码是对事件的反应,所以我必须在每次调用事件时设置它们。

请使用这个:

$scope.text = true;
 if ( error ) {
     $scope.text = "Error message";
 }

这里有错误的时候是return"Error Message"否则就是true

在 JavaScript 中混合变量类型是不好的做法。可能存在混合类型没问题的极端情况,但这不是极端情况。如果您正在寻找一种简化代码的方法,请使用 ternary operator

$scope.text = error ? 'Error message' : '';