Javascript 如何通过角度方法返回数据库结果

Javascript 如何通过角度方法返回数据库结果,javascript,php,angularjs,Javascript,Php,Angularjs,我想知道是否有可能通过ngRepeat模板中的angular方法调用返回数据库结果。以下是我的模板: <div class="article-right" ng-repeat="localNews in allLocalNews | limitTo:5"> <div class="article-title"> <p> On {{localNews.dte | date}} <a>Number of comme

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

<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>

这个脚本使我的浏览器在进入循环时冻结。任何帮助都将不胜感激。

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

乙二醇


解决方案很简单,使用控制器init上的get调用获取所有注释数据。然后使用ng repeat对该集合进行迭代,并仅显示您想要的那些数据以获得正确的新闻id。如果您只需要一些评论,下面是一个示例,它没有经过测试,但您应该了解这一点。它要求您准备API端点以返回所有注释

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>

如果我理解正确,您正在尝试获取新闻集合,那么对于每一条新闻,您希望在模板中获取评论的数量?为什么?您应该在控制器中执行此操作,或者更好地-准备端点以通过一个请求获取所需信息,而不是每次get请求都发送。还有一件事,为什么要使用$http.post作为get请求?请您解释一下在控制器中使用代码片段@tommybernaciak对不起,应该解释得更清楚些。我的意思是在控制器中获取数据,例如在初始化时调用get方法,然后在模板中使用ng repeat显示响应。不要呼叫进入ng重复。第一个优点是,您只需使用一个API调用就可以获得所需的所有数据,如果您有100条新闻,那么最终将得到100条不必要的API调用,这可能会使您的应用程序非常缓慢。第二,http请求是异步调用,在模板中使用它可能会给您带来奇怪的结果。当然,您所解释的一般想法对我来说是有意义的@Jaie,我试图进行相应的修改,但浏览器仍然在循环中运行。还有其他方法可以取得一些成果吗?非常感谢@tommybernaciak,我已经通过您的脚本找到了答案。
    <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);
    });
}
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>