Windows 8 为什么在页面控件中自动调用WinJS.UI.processAll(),而在其他地方却没有?

Windows 8 为什么在页面控件中自动调用WinJS.UI.processAll(),而在其他地方却没有?,windows-8,winjs,Windows 8,Winjs,说明了何时在应用程序中自己调用WinJS.UI.processAll(),以及何时自动完成: 如果您不使用空白应用程序模板,或者添加 控件添加到您自己创建的页面中,您可能需要添加 调用WinJS.UI.processAll 如果将控件添加到应用程序的主页(通常为default.html文件),请在onactivated事件处理程序中添加对WinJS.UI.processAll的调用,如前一示例所示 如果将控件添加到页面控件,则不需要添加对WinJS.UI.processAll的调用,因为页面

说明了何时在应用程序中自己调用WinJS.UI.processAll(),以及何时自动完成:

如果您不使用空白应用程序模板,或者添加 控件添加到您自己创建的页面中,您可能需要添加 调用WinJS.UI.processAll

  • 如果将控件添加到应用程序的主页(通常为default.html文件),请在onactivated事件处理程序中添加对WinJS.UI.processAll的调用,如前一示例所示

  • 如果将控件添加到页面控件,则不需要添加对WinJS.UI.processAll的调用,因为页面控件会自动为您添加调用。

  • 如果将控件添加到另一个不是应用程序主页的页面,请处理DOMContentLoaded事件并使用处理程序调用WinJS.UI.processAll


系统在页面控件内部自动调用WinJS.UI.processAll()的原因是什么,而不是在其他地方?

这也是因为导航模板(以及从导航模板派生的网格模板)至少包含一个data win控件元素,所以需要对其进行处理才能正常工作。
我们(微软)不想在空白项目模板中投入太多,因为毕竟它是“空白的”。因此,空白项目模板只给您一个页面,没有导航,没有控件,因此不需要任何处理。您可以自己决定添加它。

可能是因为页面控件为您处理了大量事件,请查看base.js中的源代码。它添加了可以重写的方法(函数),因此您无需担心设置处理UI的承诺。而且,他们可能想给你控制权。如果它们总是调用
processAll
,则可能会干扰您想要自己执行的任何处理(如自定义模板或渲染)。最好让您选择。我理解如果您向页面添加了data win控件元素,为什么需要调用
UI.processAll()
,但我不理解的是,Microsoft调用
processAll()的页面控件容器(与常规页面相比)有什么特殊之处
是否在页面控件中而不是在常规页面中?