ng-init如果在angularjs中有多个项目,则无效,但适用于单个项目

时间:2016-11-21 10:41:19

标签: angularjs

  

我是stackoverflow的新手,如果这个问题不合适,我很抱歉。

     

我在ng-repeat(session)中的ng-init中声明了一个函数   通过传递会话ID来获取问题长度。

//This is the HTML Part
<tr ng-repeat="session in sessionslist" ng-init='getQuestionsofSession(accessors.getId(session))' >
<td>{{session.name}}</td>
<td>{{session.speakers.length}}</td>
<td><p>{{questions.length}}</p></td>
</tr>

//This is the ANGULAR Part
    $scope.getQuestionsofSession = function(sessionid){
        $http.get('/api/audiencepanel/getquestions/'+sessionid)
            .success(function(data){                
                $scope.questions= data;
            });
    };

//Getting sessions list
$scope.getsessions= function(){
$http.get("api/getsession/"+$stateParams.id).success(function(data){
$scope.sessionslist = data;
});
  

因此,如果会话长度为单个,则ng-init正在运行,但是会话   长度倍数它没有显示任何数据。 $ scope.questions不是   显示任何数据

     

顺便说一下,Session表是不同的而Question表是   根据会话ID存储不同的问题。因此,需要根据会话ID

在会话数据中提问数据      

还有其他办法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

在每个ng重复内部,我们有不同的范围。因此question中的sessionslist[0]对象与sessionslist[1]

不同

而不是使用init,你可以这样做

$scope.getsessions= function(){
   $http.get("api/getsession/"+$stateParams.id).success(function(data){
   angular.forEach(data, function(value, key){
      $http.get('/api/audiencepanel/getquestions/'+value.id)
            .success(function(data1){                
                value.questions= data1;
            });
   });
   $scope.sessionslist = data;
});