Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 基于条件的迭代和删除_Html_Angularjs - Fatal编程技术网

Html 基于条件的迭代和删除

Html 基于条件的迭代和删除,html,angularjs,Html,Angularjs,我使用angularjs、html在表中显示信息。 我想遍历表的第二列中显示的ID,其状态在$scope.items的productstatus中给出 演示: 我尝试了如下操作,但无法在第1行和第3行分别显示productID的10,12和11A、100AX的删除线: <a ng-repeat="pid in item.productid.split(',')" href="https://urladdr/associateid={{associateNum}}" target="_b

我使用angularjs、html在表中显示信息。 我想遍历表的第二列中显示的ID,其状态在$scope.items的productstatus中给出

演示:

我尝试了如下操作,但无法在第1行和第3行分别显示productID的10,12和11A、100AX的删除线:

  <a ng-repeat="pid in item.productid.split(',')" href="https://urladdr/associateid={{associateNum}}" target="_blank">
            <span data-ng-class="item.productstatus.split(',')[$index] === 'delivered' ? 'strikethrough' : 'null'">{{pid}}
            </span><span ng-if="$index+1 != item.productid.split(',').length">;</span>
    </a> 

您正在尝试拆分一个json对象,但无法执行此操作。如果productstatus更改为字符串,则可以保持代码不变。否则,您将需要使用键/值对执行ng重复。i、 e.ng repeat=key,在item.productstatus中道具,或直接使用key,即数据ng class=item.productstatus[pid]=“已交付”?”删除线“:“null”

如果要复制和替换代码,请执行以下操作:

<a ng-repeat="pid in item.productid.split(',')" href="https://urladdr/associateid={{associateNum}}" target="_blank">
       <span data-ng-class="item.productstatus[pid.trim()] === 'delivered' ? 'strikethrough' : 'null'">{{pid}}
       </span><span ng-if="$index+1 != item.productid.split(',').length">;</span>
</a> 

更新:添加了基于注释的修剪。

请注意item.productstatus的数据结构是一个对象而不是数组

因此,您应该将用法更改为:item.productstatus[pid]

Pro提示:使用ng class指令的map to boolean选项,它更干净

ng-class="{className: item.productstatus[pid] === 'delivered'}"
计算的结果可以是表示以空格分隔的类名的字符串、数组或类名到布尔值的映射。对于映射,值为truthy的属性的名称将作为css类添加到元素中


你有一个名为strikethrough的类吗?@BShaps-是的,在style.css中添加了一个可能的副本,我已经完成了。在我的例子中,productstatus:{11A:delivered,100AX:delivered}因此每个productID都映射了它的状态,并以数组而不是字符串的形式返回。我尝试了演示中所示的方法,但无法使其工作。哦,我看到了问题,很快会有答案。当我在productId之间有额外的空间时,如果条件匹配,则无法敲入行中的第二个,如演示所示:。我尝试使用.replace//g,但无法使其正常工作。有什么意见吗@b使用pid.trim创建图形。trim删除字符串两端的所有空白。
ng-class="{className: item.productstatus[pid] === 'delivered'}"