这是情况,我有这个代码
<div data-ng-repeat="question in questions" data-ng-if="cQuestion == $index + 1" class="question-animate">
{{question.question}}-{{$index + 1}}
<div data-ng-repeat="answer in question.answers">
{{answer}} 
</div>
<input type="button" value="next" data-ng-click="nextQuestion()"/>
</div>
我想检测ng-repeat完成的时间,以便我可以更新cQuestion以显示第一个问题。由于我们首先将data-ng-if="cQuestion == $index + 1"
计算为false,并且未显示该元素,因此这限制了检测ng-repeat完成时的选项。我已尝试使用指令,但由于元素未显示且指令未被触发。 ng-if是因为有重复对象挂钩的动画。
现在我正在使用setTimeout,但我认为这种技术不可靠。
答案 0 :(得分:0)
让我们将索引cQuestion
移出视图。
您的控制器应该完成工作。
创建一个变量currentQuestion
,表示当前显示的问题。
<div>
{{currentQuestion.question}}-{{currentQuestionIndex+1}}
<div data-ng-repeat="answer in currentQuestion.answers">
{{answer}} 
</div>
<input type="button" value="next" data-ng-click="nextQuestion()"/>
</div>
然后确保nextQuestion
确实改变了当前的问题:
function nextQuestion(){
$scope.currentQuestion = $scope.questions[$scope.currentQuestionIndex];
$scope.currentQuestionIndex ++; //init with 0
}
请勿忘记在控制器启动时使用第一个问题初始化$scope.currentQuestion
。