仅当数组有两个或多个带有 angularjs ng-show 的项目时,如何显示元素?

Posted

技术标签:

【中文标题】仅当数组有两个或多个带有 angularjs ng-show 的项目时,如何显示元素?【英文标题】:How to show element only if an array have two ore more items with angularjs ng-show? 【发布时间】:2014-10-20 10:04:49 【问题描述】:

我有一组可能为空的项目,有一个或两个以上的项目。 现在,如果我想显示元素,我使用简单的 ng-show 事件。

<div ng-show="scopeName">
...
</div>

所以,如果 pageSlides 有项目,则 div 将被打印,否则它不会。

现在我想编辑这个显示当项目有 2 个或更多项目时打印的 div。

我正在尝试这个,但它不起作用:

<div ng-show="pageSlides.length > 1"> (or any number)
...
</div>

我很想在这方面提供一些帮助。

谢谢!

已更新,这是我的代码:

myApp
  .controller(
    'controllerName', 
    [
      '$rootScope',
       '$scope', 
       '$routeParams',
       'Api', 
       function($rootScope, $scope, $routeParams, Api) 

      var pageSlug = $routeParams['pageSlug']; 

      $scope.init = function() 

          $scope.singlePage = [];
          $scope.pageSlides = [];
          Api.get(
              'site/' + $rootScope.config.api.propertyId + '/page/' + pageSlug                  
          ).then(                        
              function(data)  
                    $scope.singlePage = data.page;
                    $scope.pageSlides = $scope.singlePage['media'];
              
          );

      

      $scope.init();  

])

【问题讨论】:

【参考方案1】:

试试这个代码,它应该可以工作:

<div ng-controller="MyCtrl">
    <div ng-show="array.length > 2">I'm visible</div>
    <div ng-show="array.length > 3">I'm not visible</div>
</div>

function MyCtrl($scope) 
    $scope.array = [
        id: 1,
        id: 2,
        id: 3
    ];

这是JSFiddle 的工作示例。

我想指出,您的问题代码有一个错误:scopeName.lenght > 1

我认为这样会更好:scopeName.length > 1 :)

【讨论】:

这里拼写错误,对此深表歉意。但它仍然无法正常工作。 @VassilisPits,你看过我的 JSFiddle 例子吗?这应该有效。能否为我们提供您的代码? 谢谢,我觉得自己很愚蠢,这确实是拼写错误,后来又出现了缓存问题。谢谢!【参考方案2】:

请查看demo

<div ng-app="app">
   <div ng-controller="myController">
        <div ng-show="items.length">I am showing, items array is not empty</div><br />
       <div ng-show="items.length > 1">I am showing, items array has more than one record</div><br />
       </div>
</div>



var app = angular.module('app', []);
 app.controller('myController', function ($scope) 
     $scope.items = ["Apple", "Orange"];
);

【讨论】:

这对我不起作用。我的数组来自服务,这是一个问题吗? 能否请您更新您帖子中的代码..以便我们更好地理解。 请确保pageSlides响应是一个数组?并在您的视图中检查控制器名称。我在您的代码中没有看到任何错误。 谢谢 Asik,这是我的拼写错误(在电脑上连续 18 小时需要休息:P)。我选择 Artyoms 回答只是因为他先回答。但也谢谢你!

以上是关于仅当数组有两个或多个带有 angularjs ng-show 的项目时,如何显示元素?的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS ng-grid 过滤器——filterText 格式

Angularjs - ng-map - Google Maps Javascript API v3 - 如何为多个标记设置最佳缩放

如何使用AngularJS从ng-repeat中的数组中删除对象?

AngularJs中的模块定义,一个页面加载多个ng-app

在 AngularJS1 的一个 ng-repeat 指令中使用多个 limitTo 过滤器

AngularJS:从模型数组拼接模型元素时,不会更新 ng-repeat 列表