【发布时间】:2015-01-26 15:42:01
【问题描述】:
我需要从数据库加载 2000 行,如果我访问它们只是加载 api (domain.com/api/contacts/),它加载速度足够快,但如果我尝试使用 $http 使用 ng-repeat 打印它们加载相同数量的数据大约需要 10 秒
那么我的问题是:是否可以在 $http 结束前加载响应?
我不想使用插件进行延迟加载,因为从一开始就加载所有行以进行搜索对我来说非常重要
这是我正在使用的代码
$http.get('/api/contacts/').success(function (data) {
$scope.contacts = data
}).error(function (err) {
console.log(err)
});
然后我使用
打印结果<ul>
<li ng-repeat="c in contacts">{{c.contact_name}}</li>
</ul>
我看到的是,当我通过浏览器调用 api 时,结果在请求结束之前开始加载,另一方面,角度打印结果直到请求结束。
【问题讨论】:
-
什么需要 10 秒?调用
$http,还是使用 ng-repeat 呈现该数据所需的时间? -
消耗响应并呈现响应所需的时间
-
不可能通过所提供的信息判断问题可能是什么,或者您到底在问什么。 chrome 开发工具的网络选项卡中的时间是什么样的?如果将数据作为 javascript 对象粘贴到代码中,是否仍需要 10 秒才能呈现?尝试将数据加载到一个单独的变量中,并创建一个用于调试的按钮来设置
ng-repeat中使用的变量,这将告诉哪个需要太长时间。尝试使用angularjs batarang 分析代码。 -
在您的问题中也显示您的确切 html 和一些示例对象,更好的标题应该是“为什么这个 ng-repeat 需要这么长时间?”可能有很多东西。如果您要创建一个包含 100 列的表,则可能只需要那么长的时间。如果您在 2000 个复杂对象上使用过滤器或 orderBy,则可能只需要很长时间。