Ember.js - afterRender在CSS完成之前触发
Ember.js - afterRender fires before CSS is finished
我想在处理验证时显示加载符号。我的 .hbs 文件看起来像这样
<div {{bind-attr class='isProcessing:spinner'}}></div>
我试图将我的验证包装到 afterRender 运行循环中,但显然 afterRender 并不意味着 after-CSS。我的验证是在div 的 css 类更改之前执行的(它根本没有改变)。
App.PostController = Em.Controller.extend({
isProcessing: false,
actions: {
savePost: function() {
this.set('isProcessing', true);
Ember.run.scheduleOnce('afterRender', this, function() {
// do a lot of validating and other (non-asynchronous) stuff here
// ... this may take several seconds
this.set('isProcessing', false);
});
}
}
});
在所有 CSS 渲染完成后,我的代码开始执行我该怎么办?
我也尝试了Ember.run.next。这也行不通。Ember.run.later的超时时间至少约为200毫秒,但我当然不想对任何静态时间跨度进行硬编码。
更新:这是我的问题的js小提琴:http://jsfiddle.net/4vp2mxr0/2/
任何帮助都会被理解!提前感谢!
请将您的代码包装在 Ember.run.next 中。喜欢这个:
savePost: function() {
this.set('isProcessing', true);
Em.run.next(this, function() {
//just some synchronous code that takes some time (the time inbetween the two alerts)
var i=0,a;
alert('start code');
while (i++ < 10000000) {
a = Math.pow(i, Math.pow(1/i, Math.sin(i)))/3/4/5/5 * Math.log(i);
}
this.set('isProcessing', false);
alert('finished code');
});
}
它按预期工作。我认为您的问题是您将isProcessing
设置为 true
,然后立即将其设置为 false
,因为您不会等待异步代码/承诺完成。在这种情况下,您必须在解决承诺时将isProcessing
设置为 false。如果这只是一个承诺,您可以isProcessing
.then()
中设置false
,例如:
myModel.get('children').then (children) =>
@set 'isProcessing', false
或者,如果您解析多个承诺,或者在循环中解析承诺,则可以使用 Ember.run.debounce,它将在最后一次调用此方法后的 XXXms 后触发,例如:
finishProcessing: ->
@set 'isProcessing', false
actions:
savePost: ->
myModel.get('children').then (children) =>
children.forEach (child) =>
child.then (resolvedChild) =>
Ember.run.debounce @, 'finishProcessing', 500
相关文章:
- css/js:通过滚动固定位置
- 什么CSS/JS技巧驱动镜像反转http://com.google愚人节页面
- CSS/js Flip Cards
- 将回车键映射到HTML/CSS/JS中的按钮
- CSS/.JS问题,<ul><李>在Megamenu中
- 最小化CSS/JS文件,并使用命令行创建一个文件
- 使用公共JS文档优化静态网站的CSS/JS导入
- HTML/CSS/JS切换不同的谷歌日历是同一个框架
- 使用 PHP 将 css/js 文件分配给 html 文档
- HTML/CSS/JS 构建工具
- Knockout.js在标头中绑定css/js库
- 如何在HTML/CSS/JS中为表/列表应用行虚拟化
- 当包含在CSS/JS/HTML中时,我如何得出正确的目录路径
- 这段代码有什么问题(responsible html-css-js)
- CSS/JS:如何在悬停时显示文本,并显示点击href的文本框
- 如何使css/js对象在所有浏览器上都相同
- html+css+js组合在Google Chrome或Safari浏览器中无法正常工作
- CSS/JS转换:translate3d和滚动-在Android上流畅,在iPhone上没有动力
- 使用CSS/JS反转和重新反转元素
- 将复杂的html/css/js元素添加到单个Wordpress页面中