从Ember博客来看,这些是新的组件生命周期钩子。
首次渲染(按顺序):
- 的形式提供
didInitAttrs
在创建组件后运行,并确保传递attrs。在Ember 1.13中,属性将以this.get('attrName')。didReceiveAttrs
在didInitAttrs之后运行,它也在后续的重新渲染上运行,这对于所有渲染中相同的逻辑非常有用。当组件从内部重新渲染时,它不会运行。willRender
在呈现模板之前运行。它在模板因任何原因(初始和重新渲染,无论更改是由更改或重新渲染引起)更新时运行。didInsertElement
在模板渲染后运行,元素在DOM中。didRender
在didInsertElement之后运行(它也会在后续的重新渲染中运行)。重新渲染(按顺序):
didUpdateAttrs
在组件的属性发生更改时运行(但不是在重新呈现组件时,通过component.rerender,component.set或模板使用的模型或服务中的更改)。< / LI>didReceiveAttrs
,与上述相同。willUpdate
在组件因任何原因重新呈现时运行,包括component.rerender(),component.set()或模板使用的模型或服务中的更改。willRender
,与上述相同didUpdate
在模板重新渲染后运行,DOM现在是最新的。didRender
,与上述相同。
这些是运行循环队列:
sync
队列包含绑定同步作业actions
队列是常规工作队列,通常包含计划任务,例如许routerTransitions
队列包含路由器中的转换作业render
队列包含用于渲染的作业,这些作业通常会更新DOMafterRender
包含要在所有先前计划的渲染任务完成后运行的作业。这通常适用于第三方DOM操作库,只应在整个DOM树更新后运行destroy
队列包含完成其他作业计划销毁的对象的拆除作业