【发布时间】:2015-01-21 20:12:55
【问题描述】:
首先,我有某种可行的解决方案,但我只是想问是否可以对其进行调整以获得更好的性能。所以,我的嵌套数组结构看起来像这样:
$scope.clients = [
{
name: "Ivan Drew",
age: 21,
company: "HP",
apps: [
{
appName: "Facebook",
used: "Y",
installedDate: "21/12/2014"
},
{
appName: "Instagram",
used: "N",
installedDate: "14/12/2014"
}
]
},
{
name: "John Roberts",
age: 35,
apps: [
{
appName: "Messenger",
used: "Y",
installedDate: "01/01/2015"
},
{
appName: "Facebook",
used: "Y",
installedDate: "09/11/2014"
},
{
appName: "Instagram",
used: "Y",
installedDate: "20/10/2014"
}
]
},
{
name: "Richard James",
age: 28,
apps: [
{
appName: "Instagram",
used: "N",
installedDate: "15/11/2014"
}
]
}
];
现在,我想过滤此列表以显示已安装的客户端,例如Facebook 应用程序并一直在使用它(used 属性显示了这一点)。所以我想这样显示列表:
Ivan Drew
Facebook
21/12/2014
John Roberts
Facebook
09/11/2014
我用两个 ng-repeat 创建了我的 html,看起来像这样:
<div class="client-info" ng-repeat="client in clients">
<div ng-repeat="app in client.apps | filter: { name: 'Facebook', used: 'Y' }">
{{ client.name }}<br />
{{ app.appName }}<br />
{{ app.installedDate }}<br />
</div>
</div>
所以,正如我上面所说,这可以按预期工作,但是当您有大量信息(例如,1000 个客户至少每个有 5 个应用程序)时,我会检查它,它会变得很滞后。所以我检查了这个输出是什么,看到.client-info 元素显示(当然是空的),即使没有一个应用程序符合要求。
我在考虑如何优化它,但现在做不到。
有人知道如何让它变得更好吗?
提前致谢! :)
【问题讨论】:
-
为了提高性能,您只需将
Angular完全替换为React.js
标签: javascript arrays angularjs filter angularjs-ng-repeat