Как скрыть угловое выражение, если оно равно нулю, когда внутри выражения есть математика

0

У меня есть несколько коротких выражений Angularjs на странице, которые выполняют некоторую базовую арифметику со значением. Из-за арифметики они всегда оценивают значение null, пока значение не будет передано. Я понимаю, что это не лучший способ приблизиться к этой проблеме, и я открыт для предложений, но я думаю, что для этого сценария я просто хотел бы знать, как скрыть NaN из представления.

{{myItem.value / 4}}

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

  • 0
    что такое myItem.value? число или строка с символами?
Теги:

2 ответа

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

Попробуйте это

<div ng-hide="!(myItem.value / 4)">
  {{myItem.value / 4}}
</div>
  • 0
    Возможность оценивать выражения внутри задания очень полезна! Я не знал, что это можно сделать.
0

Создать фильтр:

app.filter('divide', function() {
    function isNumeric(n) {
       return !isNaN(parseFloat(n)) && isFinite(n);
    }

    return function(value, arg) {
        if (isNumeric(value) && isNumeric(arg))
           return parseFloat(value)/parseFloat(arg);

        return value;
    }
});

Применение:

{{ myItem.Value | divide: 4 }}

Если либо myItem.Value, либо аргумент, переданный фильтру деления, не является числовым (или неопределенным), тогда он просто вернет исходное значение без изменений.

Если вы хотите скрыть значение, если оно не определено или не является числовым, фильтр снова поможет вам:

app.filter('numberDefault', function() {
    return function(value, defaultValue) {
        function isNumeric(n) {
           return !isNaN(parseFloat(n)) && isFinite(n);
        }

        if (isNumeric(value))
           return parseFloat(n);

        return defaultValue;
    }
});

Затем вы можете связать их:

{{ myItem.Value | numberDefault:'' | divide: 4 }}

Если myItem.Value не является числовым, numberDefault вернет пустую строку. Пустая строка при передаче в разделительный фильтр просто возвращает исходное значение, пустую строку.

Ещё вопросы

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