等待执行功能,直到新的数据反映在浏览器中
Wait to perform function until new data is reflected within the browser
我有具有Id
属性的Answer
对象,该属性也用于ng-repeat内的HTML标记中的Id
标记。
<div ng-repeat="answerswer in question.Answers">
<div class="input-group">
<div class="input-group-addon">
<input type="number" style="width:40px" ng-model="answerswer.AnswerOrder"/>
</div>
<input type="text" class="form-control" id="answerswer-{{answer.Id}}"placeholder="Question Text" ng-model="answerswer.AnswerText"/>
</div>
</div>
<div class="input-group">
<div class="input-group-addon"><input type="number" style="width:40px" ng-model="answerswer.AnswerOrder" disabled/></div>
<input type="text" class="form-control" placeholder="Click to add answer" ng-click="addAnswerToQuestion(question)"/>
</div>
当用户点击输入"点击添加答案"时,它运行addAnswerToQuestion(question)
方法,这是我的控制器中的以下内容:
var newQuestionCounter = 0;
$scope.addAnswerToQuestion = function (question) {
newQuestionCounter++;
question.Answers.push({
Id: ('n'+newQuestionCounter),
AnswerText: '',
IsCorrect: false,
AnswerOrder: 0,
QuestionId: question.Id
});
document.getElementById('answer-n' + newQuestionCounter).focus();
}
这个想法是给你一种错觉,你仍然在同一个元素上,但实际上"点击添加答案"元素没有被修改,你的焦点只是默默地切换到新的Answer
。
问题是document.getElementById
在数据绑定之前被调用,ng-repeat
被更新。所以document.getElementById
没有找到元素
我如何等待所有双向数据绑定完成,或者是否有更好的方法来完成我正在尝试做的事情?
就我个人而言,在我做这样的事情之前,我会重新考虑UX,但是您可以使用$timeout服务来完成这一点。一个经验法则是,$timeout总是出现在$digest()的一个完整循环之后。
$timeout(function() {
document.getElementById('answer-n' + newQuestionCounter).focus();
}, 1);
http://plnkr.co/edit/0LnMBv6DqUjFrcmqd0v3 相关文章:
- 有时数据是't显示在浏览器中
- 当使用ajax并将html数据保存为对象时,收听浏览器返回按钮.好的或坏的
- web浏览器中的离线应用程序存储数据并在之后上传
- 如何使用web浏览器在NoSQL数据中呈现换行符
- zp.midpass.ru如何在浏览器中保存数据
- 在Android浏览器中将图像渲染为数据流
- 如何在上传前在浏览器中去除图像元数据(javascript)
- 如何在浏览器中触发另存为对话框,以便可以在内存中保存 json 数据
- Web 浏览器中的硬刷新和数据持久性
- 在 Angularjs 中浏览器页面的客户端加载中存储参考数据
- 将数据传递到视图而不刷新浏览器
- 打印包含1页以上的表数据时,如何在浏览器打印中添加分页符
- javascript Sencha touch仅在浏览器中不在设备上显示数据
- Node.js,并将数据发送回所有浏览器选项卡
- 如何使用浏览器查看页面源选项查看jquery附加的数据
- 在浏览器刷新上重复数据-Nodejs
- 如何在浏览器中压缩json请求数据
- 在浏览器会话中保存表单数据
- Parse.com文件不更新,导致从数据浏览器断开链接
- Parse.com云代码:不能保存数据浏览器对象