【发布时间】:2017-08-24 16:20:47
【问题描述】:
我想知道是否可以通过 ngRepeat 模板中的角度方法调用返回数据库结果。为了澄清这里是我的模板:
<div class="article-right" ng-repeat="localNews in allLocalNews | limitTo:5">
<div class="article-title">
<p>
On {{localNews.dte | date}}
<a>Number of comment: {{getNumberOfComment(localNews.id)}} </a>
</p>
</div>
这是我的控制器,在我的控制器中,我有一个方法可以接受 ngRepeat 中结果的每个 id 值,以从数据库中获取 cmets 的数量
$scope.getNumberOfComment = function(id){
var cObj = {id:id}; //get a news number of comments
return $http.post("shared/search/getNumberOfComment.cln.php",cObj).success(function(response){
if(response != "failed"){
return response;
}
}).error(function (response, status) {
console.log(response);
});
}
此脚本使我的浏览器在进入循环时冻结。任何帮助将不胜感激。
【问题讨论】:
-
如果我理解正确,您正在尝试收集新闻,那么对于每条新闻您想获取模板中的 cmets 数量?为什么?您应该在控制器中执行此操作,或者更好 - 准备端点以通过一个请求获取所需信息,而不是每次获取请求时都发送。
-
还有一件事,你为什么使用
$http.post来处理get请求? -
你能用代码 sn-p @tommybernaciak 解释一下“在你的控制器中做”是什么意思吗
-
对不起,应该解释得更好。我的意思是在控制器中获取数据,例如通过在初始化时调用
get方法,然后在模板中使用ng-repeat显示响应。不要在ng-repeat中调用get。第一个优点是您只需使用一次 API 调用即可获得所有数据,如果您有 100 个news,您最终将收到 100 个不必要的 API 调用,这可能会使您的应用程序非常慢。其次,http 请求是异步调用,在模板中使用它可能会给你带来奇怪的结果。
标签: javascript php angularjs