Javascript 在ng repeat中调用函数?

Javascript 在ng repeat中调用函数?,javascript,angularjs,Javascript,Angularjs,如果我有类似的代码,我将如何在ng repeat中调用getUserName函数。我以前尝试过这样做,但它成功了,但是,它不再起作用了 var user_reviews = [{ user: { name: "John Doe" }, review: { item: "Shure SE215" } }] var app = angular.module("ExApp", []); app.controller(

如果我有类似的代码,我将如何在ng repeat中调用getUserName函数。我以前尝试过这样做,但它成功了,但是,它不再起作用了

 var user_reviews = [{
     user: {
         name: "John Doe"
     },
     review: {
         item: "Shure SE215"
     }
 }]

 var app = angular.module("ExApp", []);
 app.controller("TestController", function($scope) {
     $scope.reviews = user_reviews;
     $scope.getUserName = function() {
         return $scope.user.name;
     }
 });
HTML


您可以通过ng repeat传递索引,并返回与该索引相关的user.name

  <div ng-controller="TestController">
      <div ng-repeat="review in reviews">
        <p>{{getUserName($index)}}</p>
      </div>
    </div> 

  var app = angular.module("ExApp", []); 
    app.controller("TestController", function($scope){
      $scope.reviews = user_reviews; 
      $scope.getUserName = function(index){
        return $scope.reviews[index].user.name; 
      }
    });
但是如果你只是在使用这个senario函数,我更喜欢不用像这样的函数

<div ng-controller="TestController">
          <div ng-repeat="review in reviews">
            <p>{{review.user.name}}</p>
          </div>
        </div> 

您应该将代码更改为此

<div ng-controller="TestController"><div ng-repeat="review in reviews">
<p ng-repeat="userName in review.getUserName(review.name)">{{userName.name}}</p></div></div>

var user_reviews = [
  {
    user:{
      name: "John Doe"
    }, 
    review:{
      item: "Shure SE215"
    } 
  } 
]

var app = angular.module("ExApp", []); 
app.controller("TestController", function($scope){
  $scope.reviews = user_reviews; 
  $scope.getUserName = function(userName){
    return $scope.user.name; 
  }
});

假设scope.getUserName不像您的示例中那么简单,您可以改为这样做

    // Pass the `review` object as argument
    $scope.getUserName = function(review){
        return review.user.name; // get the user name from it
    }
HTML,作为参数通过审阅

<div ng-controller="TestController">
  <div ng-repeat="review in reviews">
    <p>{{getUserName(review)}}</p>
  </div>
</div> 

你不直接取名字,而是调用函数{{review.user.name}

我试图调用一个函数,因为我需要在函数内部执行一些字符串操作。还有@IsmailRBOUH,那不行,我已经试过了。如果你不需要这个函数,你就不能使用这个函数。你用的是什么版本的Angular?你的review变量没有一个叫做getUserName的函数。我记得ng repeat创建了一个子范围
    // Pass the `review` object as argument
    $scope.getUserName = function(review){
        return review.user.name; // get the user name from it
    }
<div ng-controller="TestController">
  <div ng-repeat="review in reviews">
    <p>{{getUserName(review)}}</p>
  </div>
</div>