我有一个具有多个属性名称和值的对象,这些属性通过ng-repeat打印出来。此大对象中的两个对象称为currencyName和currencyPrice。
默认情况下,这些对象在后端有8位小数字硬编码到它们中,我的任务是操纵某个currencyName在显示页面中显示5位小数或8位小数。默认情况下,currencyPrices在后端有8位小数字硬编码到后端,由于该位代码在其他地方重复使用,因此无法触及。对于我正在处理的显示页面,我们使用过滤器|数字:默认为2。
我尝试创建一个自定义过滤器,它将定位主对象的数组,运行for循环/ forEach方法,定位currencyName对象,如果它匹配包含要操作的currencyNames的数组,则角度显示页面将显示5位小数(在这种情况下)。
这对我来说非常困难。我没有完整的代码将其粘贴到此处,但这里有一些示例代码来显示代码的外观。
<tr ng-repeat="full in fulls.mainList" class="animate-repeat">
<td>{{full.currencyName}}</td>
<td>{{full.tradedAverage | number:2}}</td>
<td>{{full.tradedAmount | number:2}}</td>
<td>{{full.currencyPrice | number:2}}</td>
</tr>
在这种情况下,fulls是在控制器内部被解析的大对象。
答案 0 :(得分:1)
答案 1 :(得分:0)
请注意,在控制器中编写自己的函数非常容易,这些函数封装了小数位数的逻辑。
<tr ng-repeat="full in fulls.mainList" class="animate-repeat">
<td>{{full.currencyName}}</td>
<td>{{full.tradedAverage | number: (fnThatTellsTheNumberOfDecimals(full, 'tradedAverage')}}</td>
<td>{{full.tradedAmount | number:(fnThatTellsTheNumberOfDecimals(full, 'tradedAmount')}}</td>
<td>{{full.currencyPrice | number:(fnThatTellsTheNumberOfDecimals(full, 'currencyPrice')}}</td>
</tr>
然后在你的控制器中写下类似的东西:
$scope.fnThatTellsTheNumberOfDecimals = function(element, attr){
if (attr === 'example' && element.type === 'some'){ return 2; }
return 6;
};