Angular ng-if 多个条件不工作

Angular ng-if multiple conditions not working

这是一个相对简单的问题,但我不明白为什么它不起作用。

所以我在 HTML 中有 ng-if 语句,我在其中检查条件是否为真。如:

<div class="new-asset" data-ng-if="$root.questionData.question_type_id != '1' || $root.questionData.question_type_id != '8'">

但由于某种原因,这不起作用。我也试过:

<div class="new-asset" data-ng-if="($root.questionData.question_type_id != '1' || $root.questionData.question_type_id != '8')">

这没有任何影响...我正在阅读并试图找到解决方案,有人建议将条件放在控制器中,这也会提高性能(不是 100% 确定是否会),如:

$scope.addNewAssetIf = $root.questionData.question_type_id != '1' || $root.questionData.question_type_id != '8';

然后在 html 中将其引用为:

<div class="new-asset" data-ng-if="addNewAssetIf">

但是由于异步加载和依赖关系,我不能使用这种方法。我需要以某种方式完成这项工作,我没有得到任何错误或任何东西,即使 question_type_id 是 1 我仍然得到 .net-asset div 显示。如果我删除 OR 语句并且只有 1 个条件有效:

<div class="new-asset" data-ng-if="$root.questionData.question_type_id != '1' || $root.questionData.question_type_id != '8'">

感谢任何帮助。

谢谢

尝试使用函数:

$scope.addNewAssetIf = function() {
  return $root.questionData.question_type_id != '1' || $root.questionData.question_type_id != '8';
};

您可以尝试使用 $rootScope 而不是 $root 并将 $rootScope 作为控制器中的依赖项包含在内吗?问题可能只是变量不在范围内。您也可以将其分配给您的 $scope,然后直接在您的模板中引用它

基本上,我们的想法是尝试查看这些值是否正确绑定到您的模板。你甚至可以尝试

{{$root.questionData.question_type_id}}</div>

验证这一点,如果没有,则从解决根本原因开始。

我忽略了所有 angular 相关的内容,并试图理解该条件背后的基本逻辑。如果 ID == 1 是否满足要求它不同于 8 的第二个条件?对于 ID 为 8 的情况不是这样吗?

换句话说,你不需要 && 而不是 || 吗?

这真的应该是一个评论,但我没有足够的声誉。