所以我在angularJS代码中有一个三元运算符测试来确定在重复块上使用哪个变量,但是这个测试在它内部进行了多次,我认为这是愚蠢的。有没有办法将表达式结果存储在变量中并使用它而不是重复表达式?
代码:
<tr ng-repeat="meta in metas">
<td class="mdl-data-table__cell--non-numeric">
{{meta.admMetNome}} <span class="pull-right">{{meta.pagCidadesPagCid[0].pagCidId ? usuarios[meta.pagCidadesPagCid[0].pagCidId].qtd : usuarios['total'].qtd}} / {{meta.admMetValor}}</span>
<md-progress-linear md-mode="determinate" value="{{(meta.pagCidadesPagCid[0].pagCidId ? usuarios[meta.pagCidadesPagCid[0].pagCidId].qtd : usuarios['total'].qtd) * 100 / meta.admMetValor}}"></md-progress-linear>
{{(meta.pagCidadesPagCid[0].pagCidId ? usuarios[meta.pagCidadesPagCid[0].pagCidId].qtd : usuarios['total'].qtd) * 100 / meta.admMetValor | number:2}}% - Prazo: de {{meta.admMetInicio | date: 'dd/MM/yyyy'}} a {{meta.admMetFim | date: 'dd/MM/yyyy'}}
</td>
</tr>
答案 0 :(得分:1)
在控制器对象或$scope
中创建一个带有参数的函数,以便在其中传递meta
。像getValue(meta)
一样。只需return
你的三元运算符。然后只需在表达式中使用此函数:value={{$ctrl.getValue(meta)}}
。
答案 1 :(得分:1)
你的控制器中的这样的东西应该可以解决问题(假设&#39; usuarios&#39;是一个范围变量)。但是像@charlietfl建议的那样是指令的好机会。
$scope.assignValue = function(meta) {
return (meta.pagCidadesPagCid[0].pagCidId) ? usuarios[meta.pagCidadesPagCid[0].pagCidId].qtd : usuarios.total.qtd * (100 / meta.admMetValor);
};
<tr ng-repeat="meta in metas">
<td class="mdl-data-table__cell--non-numeric">
{{meta.admMetNome}} <span class="pull-right">{{meta.pagCidadesPagCid[0].pagCidId ? usuarios[meta.pagCidadesPagCid[0].pagCidId].qtd : usuarios['total'].qtd}} / {{meta.admMetValor}}</span>
<md-progress-linear md-mode="determinate" value="assignValue(meta)">
</md-progress-linear>
{{(meta.pagCidadesPagCid[0].pagCidId ? usuarios[meta.pagCidadesPagCid[0].pagCidId].qtd : usuarios['total'].qtd) * 100 / meta.admMetValor | number:2}}% - Prazo: de {{meta.admMetInicio | date: 'dd/MM/yyyy'}} a {{meta.admMetFim | date: 'dd/MM/yyyy'}}
</td>
</tr>