UI数据绑定 - 在ember中逐步完成渲染?

时间:2014-01-19 08:45:34

标签: performance user-interface data-binding ember.js

背景

我的很多UI都是数据绑定到控制器的模型。

我想进行多次更改,然后让数据绑定的视觉更改发生,而不是一步一步。就像交易一样,不会导致UI的逐步更新。

问题1

当setupController中的makin发生变化时,UI数据绑定会逐步触发吗?

setupController:  function( controller, model ) {
    var manager = controller.get('manager');
    controller.set('model', model); // Will databound UI evaluate NOW?

    if (manager)
        manager.reset();
    else
        controller.set('manager', App.WorkManager.create());

    // Or will the databound UI evaluate after this full function has run?
},

问题2

如果是这样,有没有suspendRendering()/ resumeRendering()这样的东西? (暂停这种逐步更改的方法,并让它们加起来直到你恢复?)

setupController:  function( controller, model ) {
    var manager = controller.get('manager');
    // Best solution would be - Part 1
    // ????.suspendRendering();
    controller.set('model', model); 

    if (manager)
        manager.reset();
    else
        controller.set('manager', App.WorkManager.create());

    // Best solution would be - Part 2
    // ????.resumeRendering();
},

1 个答案:

答案 0 :(得分:1)

它的工作方式与Ember的运行循环相关联。它有一个非常好的解释here。基本上,运行循环负责确保所有计算属性绑定和观察者都有机会在任何更改的值最终呈现给DOM之前触发。我相信路由转换发生在运行循环的上下文中。因此,在setupController内执行的任何代码都将在UI呈现发生之前完全执行。