AngularJs: выражение ng-show/ng-hide не оценивается

Я новичок в JavaScript и AngularJS и задаюсь вопросом, почему выражение внутри кавычек не оценивается?

<span ng-show="{{remaining()}}!==0">sometext</span>

он просто печатается следующим образом:

<span ng-show="2!==0">sometext</span>

и ng-show не работает независимо от содержимого. Текст (и печатное выражение) отображается, даже если выражение завернуто в eval,:

eval("{{remaining()}}!==0")

Я прибегал к созданию функции в моем контроллере для этого:

<span ng-show="renderOrNot()">sometext</span>

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

Ответ 1

Почти там...

Когда вы используете {{}}, значения интерполируются, т.е. разметка заменяется результатом выражения. ngShow ожидает только выражения, поэтому просто используйте функцию как есть, и она будет работать:

<span ng-show="remaining() !== 0">sometext</span>

В общем, вам нужно только {{ }}, когда ваше выражение/содержимое должно отображаться.

Ответ 2

Вы не должны использовать его {{}}, потому что ваше значение является связующим. Используйте ng-show следующим образом:

<span ng-show="remaining() !== 0">sometext</span>