Я новичок в Angular, и я хочу скрыть определенный HTMl, если объект пуст, но как я могу это достичь?
до сих пор я имею:
$scope.links = data.links;
а потом:
<div ng-if="links">
/// some more html
</div>
но это не работает. Любая помощь приветствуется...
контроллер:
$scope.linksLength = Object.keys(data.links).length > 0;
HTML:
<div ng-show="linksLength">
/// some more html
</div>
В таких случаях я бы написал простую функцию для использования:
$scope.showLinks = function () {
return $scope.links !== undefined && $scope.links !== null && $scope.links.length > 0;
}
тогда
<div ng-if="showLinks()">
/// some more html
</div>
используйте ngHide или ngShow.
<div ng-show="links.length">
Просто добавьте .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
Надеюсь, поможет.
<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>
links
действительно являются массивом,ng-if="links.length"
будет хорошо, так как код представления прерывает исключения, если выражение не определено.