Javascript 优化ng重复次数| angularJS

Javascript 优化ng重复次数| angularJS,javascript,html,angularjs,json,Javascript,Html,Angularjs,Json,我想根据给定的预定义级别将代码中的所有内容分开,从级别1到级别6,现在我的JSON读取 $scope.myJson=[{ id: 1, level: 1, name: "any name" }, { id: 2, level: 2, name: "any name" }, { id: 3, level: 2, name: "any name" }....] 现在在我的HTML中,我写了如下内容 <div>level 1 <div ng-

我想根据给定的预定义级别将代码中的所有内容分开,从级别1到级别6,现在我的JSON读取

$scope.myJson=[{
  id: 1,
  level: 1,
  name: "any name"
},
{
  id: 2,
  level: 2,
  name: "any name"
},
{
  id: 3,
  level: 2,
  name: "any name"
}....]
现在在我的HTML中,我写了如下内容

<div>level 1
  <div ng-repeat="prod in myJson"  ng-if="prod.level==1">{{prod.name}}
  </div>
</div>
<div>level 2
  <div ng-repeat="prod in myJson"  ng-if="prod.level==2">{{prod.name}}
  </div>
</div>
1级
{{prod.name}
二级
{{prod.name}

以此类推,我只想使用一个ng repeat来根据级别过滤HTML中的所有结果,因为应用程序的结果数(以千为单位)花费了太多的时间来响应

您可以在ng repeat中尝试切换,例如:

<div ng-repeat="prod in myJson">
   <div ng-switch-on = "prod.level">
        <div ng-switch-when="1">
             Level 1 {{prod.name}}
        </div>
        <div ng-switch-when="2">
             Level 2 {{prod.name}}
        </div>
        <div ng-switch-default>
             Another level {{prod.name}}
        </div>
  </div>
</div>

级别1{{prod.name}
级别2{{prod.name}
另一级{{prod.name}

因此,您只需对数据进行一次运行。

您可以在ng repeat中尝试一种切换情况,例如:

<div ng-repeat="prod in myJson">
   <div ng-switch-on = "prod.level">
        <div ng-switch-when="1">
             Level 1 {{prod.name}}
        </div>
        <div ng-switch-when="2">
             Level 2 {{prod.name}}
        </div>
        <div ng-switch-default>
             Another level {{prod.name}}
        </div>
  </div>
</div>

级别1{{prod.name}
级别2{{prod.name}
另一级{{prod.name}

因此,您只需对数据执行一次运行。

为了使其更通用,
groupBy
将为您解决此问题

演示:

angular.module('app',['angular.filter']))
.controller('myCtrl',函数($scope){
$scope.myJson=[{
id:1,
级别:1,
名称:“任何名称级别1”
}, {
id:2,
级别:2,
名称:“任何名称级别2”
}, {
id:3,
级别:2,
名称:“任何名称级别2”
}, {
id:4,
级别:2,
名称:“任何名称级别2”
}, {
id:5,
级别:1,
名称:“任何名称级别1”
}, {
id:6,
级别:3,
名称:“任何名称级别3”
}]
});

myJson中的
    级别-{key}
  • {{item.name}

为了使它更通用,
groupBy
将为您解决此问题

演示:

angular.module('app',['angular.filter']))
.controller('myCtrl',函数($scope){
$scope.myJson=[{
id:1,
级别:1,
名称:“任何名称级别1”
}, {
id:2,
级别:2,
名称:“任何名称级别2”
}, {
id:3,
级别:2,
名称:“任何名称级别2”
}, {
id:4,
级别:2,
名称:“任何名称级别2”
}, {
id:5,
级别:1,
名称:“任何名称级别1”
}, {
id:6,
级别:3,
名称:“任何名称级别3”
}]
});

myJson中的
    级别-{key}
  • {{item.name}

我听说ng开关会在内部执行相同数量的比较,如果是这样的话,那会不会使应用程序的速度变慢?我需要在这个位置打印prod.name我不知道angular core的确切原因,但如果你从REST API获得JSON,也许你可以尝试过滤它。这就是问题所在,他们没有创建一个API来执行这样的比较,因此,我必须在UI级别上进行此操作此解决方案的问题是,级别名称显示为number if times,这是不需要的,可以通过简单的orderby获得。我听说ng开关会在内部进行相同数量的比较,如果是这样的话,那会不会使应用程序的速度变慢?我需要在这个位置打印prod.name我不知道angular core的确切原因,但如果你从REST API获得JSON,也许你可以尝试过滤它。这就是问题所在,他们没有创建一个API来执行这样的比较,因此,我必须在UI级别上进行此操作此解决方案的问题是,级别名称显示为number if times,这是不需要的,可以通过简单的orderby Too获得。如果有两个具有相同级别的对象,则它不起作用。确切地说,相同级别上有许多对象level@Vibhor还有@NicolòBosch:正确的观点,所以更新了我的答案
groupby
将满足您的需要。如果您有两个具有相同级别的对象,则它不起作用。实际上,在同一级别上有许多对象level@Vibhor还有@NicolòBosch:正确的观点,所以更新了我的答案<代码>groupby
将满足您的需要。