角度ng - 如果多个条件不起作用

时间:2016-09-22 10:23:00

标签: javascript angularjs angularjs-directive angular-ng-if

这是一个相对简单的问题,但我无法弄清楚为什么这不起作用。

所以我在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%确定),如: / p>

$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'">

感谢任何帮助。

由于

3 个答案:

答案 0 :(得分:2)

我忽略了与角度相关的一切,并试图理解条件背后的基本逻辑。如果ID == 1不满足第二个条件,它要求它与8不同?对于ID为8的情况,情况并非如此?

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

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

答案 1 :(得分:1)

尝试使用功能:

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

答案 2 :(得分:0)

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

基本上,我们的想法是尝试查看值是否与模板绑定。你甚至可以试试

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

要验证这一点,如果没有,请先解决根本原因。