angularjs
2016-11-21 57 views 1 likes 
1

我是新來的stackoverflow,對不起,如果這個問題是不正確的。如果在angularjs中有多個項目,但ng-init不工作,但是爲單個項目工作

我已經在ng-init中通過ng-repeat(session)聲明瞭一個函數,通過傳遞會話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不是 顯示任何數據

順便說一下,會話表是不同的,問題表是 不同,問題根據會話ID存儲。因此,需要基於會話編號的會話數據中的問題數據

有沒有其他方法可以使此工作?

+3

不要使用NG-初始化。正如文件所述,它幾乎不應該被使用。直接從控制器初始化視圖所需的數據。順便說一句,擁有一個$ scope.questions字段沒有什麼意義,它包含一個會話的問題,因爲你正在顯示幾個會話。 –

+0

而不是在會話列表中使用ng-init循環並提取問題 – simon

+0

對ng-repeat中的每個元素提出API調用是不好的做法。你究竟在尋找什麼? – Aravind

回答

0

在每個ng重複中我們有不同的範圍。所以question對象sessionslist[0]不一樣sessionslist[1]

而不是使用初始化的,你可以做這樣的

$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; 
}); 
+0

這很酷,完美運作。 – Kranthi

相關問題