目前我的控制器字段包含多个对象的可变数组。 每次我添加/删除数组中的元素 - 模板渲染发生。那很好。
现在我有一种情况,我必须更换整个阵列。
如果我通过.clear()
然后.pushObjects()
执行此操作,我会看到模板闪烁。
非常明显,因为Em在.clear
渲染空模板并再次渲染模板,
.pushObjects()
致电后。
我想,有没有办法在模型更新时暂停模板渲染? 在这种情况下,应该只有一个渲染调用,而闪烁不应该。
所以问题是:如何在Ember中控制渲染过程?
答案 0 :(得分:0)
当您调用set
方法时,Ember会更新您的模板。例如,在您的某个控制器功能中,您可以执行以下操作:
var someArray = [ 1, 2, 3, 4, 5 ];
this.set('myArray', someArray);
这将导致任何绑定到myArray
的内容更新。在您的情况下,我会获取您的数组,进行修改(clear
和pushObjects
),然后致电set
:
var arr = this.get('myArray');
arr.clear();
arr.pushObjects(...);
this.set('myArray', arr);
答案 1 :(得分:0)
Ember使用run loop并排队以避免描述问题。您是否以同步方式更改阵列(清洁和完成)?