AngularJs - странная ошибка при применении функции области видимости к переменной во всплывающей подсказке

0

У меня есть 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. Но он не является нулевым, иначе он не может быть распечатан правильно.

Снимок экрана об ошибке

Изображение 174551

Я также должен добавить, что фактические данные таблицы запрашиваются отдельно в таблице оценок через асинхронный HTTP-вызов.

Как это исправить?

  • 0
    actualTable заполняется через ajax?
  • 0
    Через anm asycn http вызов да
Теги:

2 ответа

1
Лучший ответ

Пытаться

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

Или добавьте undefined чек в свой $scope.formatNumber например

$scope.formatNumber = function(data) {
    if (data) {
        //your code
    }
};
  • 0
    Хм, на самом деле это хорошее исправление - мы ждем следующего цикла $ digest, чтобы правильно понять данные. Спасибо друг.
0

Вероятно, это случай, когда привязки оцениваются в угловом дайджесте до того, как будут заполнены значения. То же самое происходит, когда вы используете вместо или вместо

Попробуйте установить значение formatNumber (actualTable [account] [field]) в область вашего контроллера для переменной, а затем привязать ее к подсказке. Синтаксис углового выражения должен иметь возможность обрабатывать значения в области без регистрации на ошибку консоли.

Например

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

В вашем html:

tooltip="{{formattedValue}}"

Бонус: вы можете использовать угловую одноразовую привязку (добавьте свое выражение с помощью "::"), чтобы сбросить значение из цикла дайджеста, что поможет сохранить ваш интерфейс быстро.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню