【问题标题】:Angular ng-if multiple conditions not workingAngular ng-if 多个条件不起作用
【发布时间】:2016-09-22 10:22:59
【问题描述】:

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

所以我在 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'">

感谢任何帮助。

谢谢

【问题讨论】:

  • 在我看来question_type_id != '1' || question_type_id != '8' 总是返回true
  • 您是否检查过它是否将数字作为字符串而不是实际数字返回?

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


【解决方案1】:

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

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

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

【讨论】:

  • 传奇...! :) 我知道这是一件简单的事情......我想我可能在这里弄错了我自己的逻辑哈哈 :) 谢谢
【解决方案2】:

尝试使用函数:

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

【讨论】:

  • 感谢您的回答,问题是在 addNewAssetIf() 运行后正在加载 questionData。由于其他依赖关系,我也无法更改此设置。我知道我们并不生活在理想的世界中,但理想情况下我需要 HTML 版本才能工作:/
  • 如果您没有使用函数,addNewAssetIf 的值将是静态的。使用函数会创建一个动态返回,该返回会在每个摘要周期以角度刷新。这意味着一旦您的异步方法完成并且 questionData 的值发生更改,该值将被刷新。
【解决方案3】:

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

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

{{$root.questionData.question_type_id}}&lt;/div&gt;

要验证这一点,如果不是,请从解决根本原因开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    相关资源
    最近更新 更多