在ng重复使用隐藏元素完成后执行函数
execute function after ng-repeat finishes with hidden elements
这是情况,我有这个代码
<div data-ng-repeat="question in questions" data-ng-if="cQuestion == $index + 1" class="question-animate">
{{question.question}}-{{$index + 1}}
<div data-ng-repeat="answerswer in question.answers">
{{answer}} 
</div>
<input type="button" value="next" data-ng-click="nextQuestion()"/>
</div>
我想检测ng重复何时完成,这样我就可以更新cQuestion来显示第一个问题。由于我们有data-ng-if="cQuestion == $index + 1"
,它一开始计算为false,并且元素没有显示,这限制了我检测ng repeat何时完成的选项。我尝试过一个指令,但由于元素没有显示,指令也没有被激发。ng if之所以存在,是因为存在挂接到重复对象的动画。现在我用setTimeout来完成,但我认为这种技术不可靠。
让我们将索引cQuestion
移出视图。
你的控制器应该完成这项工作。创建一个变量currentQuestion
,表示当前显示的问题。
<div>
{{currentQuestion.question}}-{{currentQuestionIndex+1}}
<div data-ng-repeat="answerswer 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
。
相关文章:
- 如何做到这一点,使代码在不传递条件后执行函数
- javascript自执行函数-不同的语法
- JavaScript:只有当数组中的所有项都为true时才执行函数
- iFrame url更改时执行函数
- 为什么AngularJS在每个摘要循环上都执行函数
- 如何使用setInterval执行函数
- 当*ngFor以角度2结束时执行函数
- Ajax调用完成后如何执行函数
- 在显示引导弹出窗口之前执行函数
- 从自执行函数返回函数的Javascript性能命中率
- 在操作完成时执行函数
- jquery/js中的自执行函数
- 如何仅在完成对gap.client.youtube的请求.execute后执行函数
- 构造函数函数中的自执行函数的OO上下文/范围
- Javascript未使用=运算符执行函数
- AngularJS:如何按照预定义的顺序执行函数
- 在不使用隔离作用域的情况下执行函数的角度指令
- 如何在页面加载后执行函数是在 AngularJS 中完成的
- 完成页面加载后执行函数
- 如何在完成完全执行函数后触发循环