У меня есть 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]
имеет значение null. Но он не является нулевым, иначе он не может быть распечатан правильно.
Снимок экрана об ошибке
Я также должен добавить, что фактические данные таблицы запрашиваются отдельно в таблице оценок через асинхронный HTTP-вызов.
Как это исправить?
Пытаться
{{ actualTable[account] && actualTable[account][field] && formatNumber(actualTable[account][field]) }}
Или добавьте undefined
чек в свой $scope.formatNumber
например
$scope.formatNumber = function(data) {
if (data) {
//your code
}
};
Вероятно, это случай, когда привязки оцениваются в угловом дайджесте до того, как будут заполнены значения. То же самое происходит, когда вы используете вместо или вместо
Попробуйте установить значение formatNumber (actualTable [account] [field]) в область вашего контроллера для переменной, а затем привязать ее к подсказке. Синтаксис углового выражения должен иметь возможность обрабатывать значения в области без регистрации на ошибку консоли.
Например
$scope.formattedValue = formatNumber(actualTable[account][field]);
В вашем html:
tooltip="{{formattedValue}}"
Бонус: вы можете использовать угловую одноразовую привязку (добавьте свое выражение с помощью "::"), чтобы сбросить значение из цикла дайджеста, что поможет сохранить ваш интерфейс быстро.
actualTable
заполняется через ajax?