首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何通过angular方法返回数据库结果

如何通过angular方法返回数据库结果
EN

Stack Overflow用户
提问于 2017-08-25 00:20:47
回答 2查看 160关注 0票数 0

我想知道是否有可能通过ngRepeat模板中的angular方法调用返回数据库结果。以下是我的模板:

代码语言:javascript
代码运行次数:0
运行
复制
<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值,以便从数据库中获取评论的数量

代码语言:javascript
代码运行次数:0
运行
复制
$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);
    });
}

这个脚本使我的浏览器在进入循环时冻结。任何帮助都将受到高度的感谢。

EN

回答 2

Stack Overflow用户

发布于 2017-08-25 12:57:08

它可能会循环,因为每个摘要周期都会重新调用以获取信息。最好让每个项目都填充一个变量,并在每个元素上调用ng-init之类的东西,这些元素只会被调用一次来初始化项目变量。这有意义吗?

例如

代码语言:javascript
代码运行次数:0
运行
复制
    <div class="article-right" ng-repeat="localNews in allLocalNews | limitTo:5">
      <div class="article-title">
        <p>
          On {{localNews.dte | date}} 
          <a ng-init=getNumberOfComment(localNews.id, localNews)>Number of comment: {{localNews.myVar}} </a>
        </p>
      </div>

  $scope.getNumberOfComment = function(id, localNews){ 
  var cObj = {id:id};   //get a news number of comments   
  return $http.post("shared/search/getNumberOfComment.cln.php",cObj).success(function(response){
        if(response === "passed"){
            localNews.myVar = response;
        }
    }).error(function (response, status) {
        console.log(response);
    });
}
票数 1
EN

Stack Overflow用户

发布于 2017-08-25 18:21:55

解决方案很简单,在控制器初始化上使用get调用来获取所有注释数据。然后在这个集合上使用ng-repeat iterate,只显示您想要作为正确的新闻id的那些数据。如果你只想要一些评论,这是一个例子,它没有经过测试,但你应该明白了。它要求您准备API端点以返回所有注释。

代码语言:javascript
代码运行次数:0
运行
复制
function CommentsController() {
  var vm = this;
  vm.comments = [];
  getComments();

  function getComments() {
    $http.get("your/api/getComments.cln.php").success(function(r){
      vm.comments = r;
    }
  }

  function getNumberOfComment(newsId) {
    return vm.comments.filter(function(comment){
      return comment.news_id === newsId;
    }).length;
  }
}


<div class="article-right" ng-repeat="localNews in allLocalNews | limitTo:5">
  <div class="article-title">
    <p>
     On {{localNews.dte | date}} 
    <a>Number of comment: {{$ctrl.getNumberOfComment(localNews.id)}} </a>
  </p>
</div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45866629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档