繁体   English   中英

在ng-repeat中调用函数?

[英]Calling a function in ng-repeat?

如果我有与此类似的代码,该如何在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

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

您可以从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> 
//You can directly access the username 
    <div ng-controller="TestController">
      <div ng-repeat="review in reviews">
        <p>{{review.user.name}}</p>
      </div>
    </div> 

//or You can pass the review as parameter and return username from that function.
    //HTML
    <div ng-controller="TestController">
      <div ng-repeat="review in reviews">
        <p>{{getUserName(review)}}</p>
      </div>
    </div> 
    //JS
    $scope.getUserName = function(review){
        return review.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,通过review作为参数

<div ng-controller="TestController">
  <div ng-repeat="review in reviews">
    <p>{{getUserName(review)}}</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; 
  }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM