angularjs javascript对象上空ng-repeat的默认文本

时间:2012-12-12 17:35:05

标签: javascript angularjs

我在打印默认文本时遇到问题,因为正在迭代javascript对象的空ng-repeat。通常我会做一个<div ng-show="object.length==0">EMPTY SET</div>",但你不能在javascript对象上调用长度。我有一个简单的jsfiddle来演示这个问题:http://jsfiddle.net/C4t4LystX/zHJv8/8/。基本上我只需要知道ng-repeat没有重复的对象,所以我可以显示一些默认文本。谢谢你的帮助。

2 个答案:

答案 0 :(得分:16)

你是对的,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); 
    };
}

http://jsfiddle.net/zHJv8/21/

编辑:更改了isEmpty以使用angular.equals而不是每个循环。

答案 1 :(得分:1)

ng-show在布尔表达式中起作用,所以你需要的是在set为空时将某些东西设置为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