как скрыть HTML в Angular, когда объект пуст

0

Я новичок в Angular, и я хочу скрыть определенный HTMl, если объект пуст, но как я могу это достичь?

до сих пор я имею:

$scope.links = data.links;

а потом:

<div ng-if="links">
    /// some more html
</div>

но это не работает. Любая помощь приветствуется...

Теги:

5 ответов

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

контроллер:

$scope.linksLength = Object.keys(data.links).length > 0;

HTML:

<div ng-show="linksLength">
    /// some more html
</div>
1

В таких случаях я бы написал простую функцию для использования:

$scope.showLinks = function () {

  return $scope.links !== undefined && $scope.links !== null && $scope.links.length > 0;
}

тогда

<div ng-if="showLinks()">
    /// some more html
</div>
  • 1
    Предполагая, что links действительно являются массивом, ng-if="links.length" будет хорошо, так как код представления прерывает исключения, если выражение не определено.
0

используйте ngHide или ngShow.

<div ng-show="links.length">

https://docs.angularjs.org/api/ng/directive/ngHide

0

Просто добавьте .length в ng-if="links" затем измените ng-if на ng-show.

Например

<div ng-show="links.length">
    /// some more html
</div>

Если ng-show обнаруживает, что значение links.length равно 0, тогда оно false если не равно 0, тогда оно true.

0= false

> 0= true

Надеюсь, поможет.

0
<body>
<div ng-app="myApp" ng-controller="myCtrl" >
<p ng-hide="isempty(products)">element</p>
</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {

$scope.products=[];

$scope.isempty=function(obj)
{
return (angular.equals([], obj));
}
});
</script>
</body>

Ещё вопросы

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