使用angularjs从视图调用$http.get方法

使用angularjs从视图调用$http.get方法,angularjs,Angularjs,我试图调用$http.get方法来加载页面的内容,该页面是电子邮件地址列表 当我的页面加载时,它会不断调用http.get方法,而我只想调用它一次来加载电子邮件地址,然后将其存储在scope变量中 我的视图代码是 <h2>Members</h2> <!--<div>{{getTeamMembers()}}</div>--> <div ng-repeat="member in teamParticipants"> &l

我试图调用$http.get方法来加载页面的内容,该页面是电子邮件地址列表

当我的页面加载时,它会不断调用http.get方法,而我只想调用它一次来加载电子邮件地址,然后将其存储在scope变量中

我的视图代码是

<h2>Members</h2>

<!--<div>{{getTeamMembers()}}</div>-->
<div ng-repeat="member in teamParticipants">
   <span> </span> <span>{{member}}</span>
</div>
代码工作正常,但它不断地调用getTeamMembers函数,所以我的问题是,我应该怎么做才能只调用一次函数

编辑::添加了用于添加新团队成员的其他方法addTeam。它使用不同的视图。通过从控制器内部调用该函数,部分解决了问题,但现在当我加载addTeam视图时,$scope.getFixedTeam函数也被调用,我不想调用该函数。我该怎么做?
关于,

您将函数调用放在绑定中,这意味着它将在每个应用摘要[1]上执行。相反,在控制器中调用getTeamMembers,并在视图中使用teamparticients属性


[1] :{{}}在Angular中是一个双向绑定,如果您绑定到一个函数,它必须每次计算结果以确定它是否是新的。这意味着每次AngularJS检查脏状态时,它都会调用所有绑定中的所有函数。这可能会增加一个非常昂贵的周期,因此只有在必要时才应该这样做

不需要在html中调用getTeamMembers


您可以在函数定义之后调用它。在函数下面

注释掉{{getTeamMembers}}。看看发生了什么事,非常感谢您的时间,添加函数很有效,我已经添加了完整的控制器代码,所以当我导航到添加新的团队视图时,它使用相同的控制器并自动调用该函数。我希望避免在“添加新团队”视图上调用此函数。我怎么办。感谢您的时间。如果它是不同的视图,听起来应该是不同的控制器,但是如果它必须是同一个控制器,则需要某种if语句,以便仅在需要时加载团队成员。顺便说一下,在您更新的代码中,我仍然在视图中看到函数调用,而不是在控制器中!
$scope.addTeam = function() {
    $http.post('team', $scope.team).
    success(function(fixedTeam, status, headers, config) {
          //succcess
    }).
    error(function(fixedTeam, status, headers, config){
        console.debug("error");
    });
};

$scope.getTeamMembers = function(){

var teamUId = "12541254";

$http({method: 'GET', url: 'team/'+teamUId}).
success(function(data, status, headers, config) {
      var members = [];
      $(data.listOfMembers).each(function(id,partcipantEmail){
          $http({method: 'GET', url: 'users?email='+partcipantEmail}).
          success(function(participant, status, headers, config) {
              members.push("new member");
          })
      });
      $scope.teamParticipants = members;
}).
error(function(data, status, headers, config) {
      console.debug("error");
});

};

});