Как проверить, есть ли переменная scope undefined в шаблоне AngularJS? - программирование
Подтвердить что ты не робот

Как проверить, есть ли переменная scope undefined в шаблоне AngularJS?

Как проверить, является ли переменная области видимости undefined?

Это не работает:

<p ng-show="foo == undefined">Show this if $scope.foo == undefined</p>
4b9b3361

Ответ 1

Вот самый чистый способ сделать это:

<p ng-show="{{foo === undefined}}">Show this if $scope.foo === undefined</p>

Не нужно создавать вспомогательную функцию в контроллере!

Ответ 2

Использование undefined для принятия решения обычно является признаком плохого дизайна в Javascript. Вы можете подумать о том, чтобы сделать что-то еще.

Однако, чтобы ответить на ваш вопрос: я думаю, что лучший способ сделать это - добавить вспомогательную функцию.

$scope.isUndefined = function (thing) {
    return (typeof thing === "undefined");
}

и в шаблоне

<div ng-show="isUndefined(foo)"></div>

Ответ 3

Исправлено:

HTML

  <p ng-show="getFooUndef(foo)">Show this if $scope.foo === undefined</p>

JS

$scope.foo = undefined;

$scope.getFooUndef = function(foo){
    return ( typeof foo === 'undefined' );
}

Fiddle: http://jsfiddle.net/oakley349/vtcff0w5/1/

Ответ 4

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

<p ng-show="!foo">Show this if $scope.foo is undefined</p>

И наоборот:

<p ng-show="foo">Show this if $scope.foo is defined</p>

Ответ 5

Отправка нового ответа с тех пор, как изменилось поведение Angular. Проверка равенства с undefined теперь работает в выражениях Angular, по крайней мере, с 1,5, как работает следующий код:

ng-if="foo !== undefined"

Если значение ng-if равно true, удаление свойства percentages из соответствующей области и вызов $digest удаляет элемент из документа, как и следовало ожидать.

Ответ 7

Вы можете использовать операцию двойной трубы, чтобы проверить, не является ли значение неопределенным, после оператора:

<div ng-show="foo || false">
    Show this if foo is defined!
</div>
<div ng-show="boo || true">
    Show this if boo is undefined!
</div>

Проверьте JSFiddle на демо

Для технического объяснения двойной трубы, я предпочитаю взглянуть на эту ссылку: fooobar.com/questions/1143/...

Ответ 8

Как писал @impulsgraw. Вам нужно проверить неопределенность после каналов:

<div ng-show="foo || undefined">
    Show this if foo is defined!
</div>
<div ng-show="boo || !undefined">
    Show this if boo is undefined!
</div>

https://jsfiddle.net/mjfz2q9h/11/

Ответ 9

<p ng-show="angular.isUndefined(foo)">Show this if $scope.foo === undefined</p>