У меня проблема с получением текста по умолчанию для печати для пустого ng-repeat, который выполняет итерацию над объектом javascript. Обычно я просто делал <div ng-show="object.length==0">EMPTY SET</div>"
, но вы не можете называть длину объекта javascript. У меня есть простой jsfiddle, чтобы продемонстрировать проблему: http://jsfiddle.net/C4t4LystX/zHJv8/8/. В основном мне просто нужно знать, когда ng-repeat не имеет объектов для повторения, поэтому я могу показать текст по умолчанию. Спасибо за любую помощь.
Текст по умолчанию angularjs для пустого ng-repeat в javascript-объекте
Ответ 1
Вы правы, в javascript нет object.length. Поскольку вы перенаправляете источники на пустой объект, вам нужно проверить, не является ли объект пустым или какие-то источники. Вы можете написать простую функцию с именем isEmpty.
<div ng-show="isEmpty(sources)">
EMPTY SOURCES
</div>
function Ctrl1($scope) {
$scope.sources = {source1:{id:"source1"},source2:{id:"source2"}};
$scope.cleanSources = function(){
$scope.sources = {};
};
$scope.isEmpty = function (obj) {
return angular.equals({},obj);
};
}
EDIT: Изменено isEmpty для использования angular.equals вместо каждого цикла.
Ответ 2
ng-show работает из логического выражения, поэтому вам нужно только установить значение true, когда набор пуст, и false, если в нем есть что-то. Вот скрипка с одним из способов сделать это:
Вот идея:
$scope.cleanSources = function(){
$scope.sources = {};
$scope.empty = true;
};
И вот рабочая скрипка: http://jsfiddle.net/J38r2/
Этот метод напрямую не проверяет, являются ли источники пустыми. Для этого вы могли:
http://jsfiddle.net/timothybone/HXgbR/4/
И, конечно же, документы показывают ту же идею: http://docs.angularjs.org/api/ng.directive:ngShow