AngularJs - 将范围函数应用于工具提示中的变量时出现奇怪的错误

时间:2015-11-03 02:47:12

标签: javascript angularjs

我有一个ng-repeat打印出一个数字列表

<td ng-repeat="field in objectKeys(estimate)" ng-init="amount = estimate[key]">
    <a href="#" 
    editable-text="estimate[field]" 

    onaftersave="updateFigure(field,value[field], estimate)" 

    tooltip="${{formatNumber(actualTable[account][field])}}" 

    tooltip-trigger="mouseenter" 

    tooltip-placement="left">

        {{formatNumber(estimate[field])}} 
    </a>
</td>

好处是,它完美无缺,即用显示实际数量的工具提示打印出估计数字。

但是,控制台会报告错误,指出此{{formatNumber(actualTable[account][field])}}函数调用存在问题,因为变量actualTable[account][field]为空。但它不是空的,否则无法正确打印出来。

错误的屏幕截图是

enter image description here

我还必须补充说,实际的表数据是通过异步http调用分别请求到估计表的。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

尝试

{{ actualTable[account] && actualTable[account][field] && formatNumber(actualTable[account][field]) }}

或者在undefined中添加$scope.formatNumber支票

$scope.formatNumber = function(data) {
    if (data) {
        //your code
    }
};

答案 1 :(得分:0)

这可能是在填充值之前在角度摘要中评估绑定的情况。使用时会发生同样的事情  代替或代替

尝试将控制器范围中formatNumber(actualTable [account] [field])的值设置为变量,然后将其绑定到工具提示。 Angular表达式语法应该能够处理作用域上的值而不记录控制台错误。

E.g。

$scope.formattedValue = formatNumber(actualTable[account][field]);

在你的HTML中:

tooltip="{{formattedValue}}"

额外奖励:您可以使用角度一次性绑定(使用&#34; ::&#34;前置表达式)将值从摘要周期中删除,这将有助于保持您的前端快速。