3

如果满足条件,我正在尝试使用ng-if显示某些行,但似乎不能让它 100% 正确工作。

<div style="margin-bottom: 1em;">

  <h4><!-- content omitted for brevity--></h4>

  <p>
    <strong>Covered:</strong> &nbsp;
    <a ng-href class="pointer" data-ng-repeat="life in data.list2 track by $index" ng-if="life.beneficiary.length > 0" ng-click="c.editBeneficiary(life)">

      <!-- content omitted for brevity-->
    </a>

    <a ng-href class="pointer" ng-if="life.beneficiary.length = 0" ng-click="c.addBeneficiary()">Add Beneficiary&nbsp;<i class="fa fa-plus-circle" style="color: green;"/></a></p>

</div>

在上面的代码中,如果受益人的数量大于 0 ( ng-if="life.beneficiary.length > 0"),我想列出名称并允许用户在必要时对其进行编辑。这部分工作正常。但是,如果受益人的数量等于 0,那么我想要一个显示“添加受益人”的链接,并允许用户这样做。

我将这些ng-if陈述放在<a>标签中,我不确定这是否正确。当我使用没有受益人的用户登录时,“添加受益人”链接不显示。

  • 我在这里做错了什么?
4

4 回答 4

7

问题life.beneficiary.length = 0不是比较,而是试图将0(零)值分配给life.beneficiary.length(这是错误的)。

此外,当没有受益人时life.beneficiary.length == 0(这是正确的)可能是虚假的,因为life.beneficiary可能是nullundefined(这取决于您的控制器逻辑)......但是,为了解决这个尝试:

更改 ng-if="life.beneficiary.length = 0" ng-if="!life.beneficiary.length"(这相当于,但如果是或ng-if="life.beneficiary.length == 0",它不会在您的逻辑中失败)life.beneficiarynullundefined

<a ng-href class="pointer" ng-if="!life.beneficiary.length" ng-click="c.addBeneficiary()">Add Beneficiary&nbsp;
</a>

此外,建议将两个链接 ( <a>) 包装在一个元素 ( span, div, ... 根据您的意愿) 中,该元素将包含ng-repeat,如下所示:

<p>
<!-- there is content omitted for brevity -->
  <span data-ng-repeat="life in data.list2 track by $index">

    <a class="pointer" ng-if="life.beneficiary.length > 0" ng-click="c.editBeneficiary(life)">

    <!-- content omitted for brevity-->
    </a>

    <a class="pointer" ng-if="!life.beneficiary.length" ng-click="c.addBeneficiary()">Add Beneficiary&nbsp;</a>

  </span>

</p>
于 2017-04-04T20:05:52.217 回答
1

尝试改变这一点

ng-if="life.beneficiary.length = 0"

ng-if="life.beneficiary.length == 0"
于 2017-04-04T19:59:00.897 回答
0

**

  1. 使用 life.beneficiary.length === 0 代替 life.beneficiary.length = 0
  2. = 用于赋值,== 或 === 用于比较。

或者,您也可以使用此优化逻辑。

  1. ng-if="life.beneficiary.length"

如果受益人长度为 0,则链接将被隐藏,否则它将显示。

**

<a ng-href class="pointer" ng-if="life.beneficiary.length === 0" ng-click="c.addBeneficiary()">Add Beneficiary&nbsp;<i class="fa fa-plus-circle" style="color: green;"/></a></p>
于 2020-08-11T08:14:56.640 回答
0

按照您当前的设置方式,它只会显示<a>满足第一个ng-if要求的标签。您的两个<a>标签都需要一个ng-repeat声明以及正确的ng-if声明:

<div style="margin-bottom: 1em;">
<h4>
    <img class="icon" src="basic_life.png" height="30" width="30"> &nbsp;<strong>Insured?</strong> &nbsp;&nbsp;<font size=2>
        <i class="fa {{data.icon}}" style="color:{{data.color}}" /> {{data.status}}
    </font>&nbsp;&nbsp;
</h4>
<p>
    <strong>Covered:</strong> &nbsp;
    <a ng-href class="pointer" data-ng-repeat="life in data.list2 track by $index" ng-if="life.beneficiary.length > 0"
       ng-click="c.editBeneficiary(life)">
        <font ng-show="$last && !$first">&nbsp;and&nbsp;</font>{{life.beneficiary}}&nbsp;&nbsp;
        <i class="fa fa-edit" /><font ng-show="!$last">,&nbsp;</font>
    </a>
    <a ng-href class="pointer" data-ng-repeat="life in data.list2 track by $index" ng-if="!life.beneficiary.length" ng-click="c.addBeneficiary()">
        Add Beneficiary&nbsp;
        <i class="fa fa-plus-circle" style="color: green;" />
    </a>
</p>

如果您希望它在单个 ng-repeat 下,您需要执行以下操作:

<div style="margin-bottom: 1em;">
<h4>
    <img class="icon" src="basic_life.png" height="30" width="30"> &nbsp;<strong>Insured?</strong> &nbsp;&nbsp;<font size=2>
        <i class="fa {{data.icon}}" style="color:{{data.color}}" /> {{data.status}}
    </font>&nbsp;&nbsp;
</h4>
<p>
    <strong>Covered:</strong> &nbsp;
    <div data-ng-repeat="life in data.list2 track by $index">
        <a ng-href class="pointer"  ng-if="life.beneficiary.length > 0"
           ng-click="c.editBeneficiary(life)">
            <font ng-show="$last && !$first">&nbsp;and&nbsp;</font>{{life.beneficiary}}&nbsp;&nbsp;
            <i class="fa fa-edit" /><font ng-show="!$last">,&nbsp;</font>
        </a>
        <a ng-href class="pointer" ng-if="life.beneficiary.length = 0" ng-click="c.addBeneficiary()">
            Add Beneficiary&nbsp;
            <i class="fa fa-plus-circle" style="color: green;" />
        </a>
    </div>
</p>

于 2017-04-04T20:02:44.793 回答