SAPUI5ViewControllerlifecyclemethodsCreateanApplicationProjectforSAPUI5打开Eclipse并转到菜单选项,File->New->Other....在New窗口中,打开节点SAPUI5ApplicationDevelopment并选择ApplicationProject选项。单击下一步按钮。提供项目的名称。我们称它为UI5LifecycleDemo。选择库sap.ui.commons并选中创建初始视图选项。单击下一步按钮。在下一个窗口中,为视图提供一个名称。让我们称之为主要的。选择开发范式为JavaScript。这将在JavaScript中创建一个视图。单击完成按钮。创建好的SAPUI5项目层结构如下:WriteViewLogicmain.view.js的内容:sap.ui.jsview("ui5lifecycledemo.main",{/**指定属于这个View的Controller。*在它的情况下未实现,或者返回“null”,*此视图没有控制器。*@memberOfui5lifecycledemo.main*/getControllerName:function(){return"ui5lifecycledemo.main";},/**最初被调用在Controller实例化后一次。*这是构建UI的地方。*由于将Controller提供给此方法,因此可以*立即附加其事件处理程序。*@memberOfui5lifecycledemo.main*/createContent:function(oController){console.log("createContent()ofmainviewcalled...");//创建一个面板对象varmainPanel=newsap.ui.commons.Panel("mainPanel");//创建一个按钮对象varexitButton=newsap.ui.commons.Button({id:"exitButton",//sap.ui.core.IDtext:'Exitandkillcontroller',//stringpress:[function(oEvent){//自杀this.destroy();//让全世界知道它alert("ViewandControllerdestroyed...");},this]});//将按钮添加到主面板mainPanel.addContent(exitButton);返回主面板;}});编写Controller逻辑打开main.controller.js文件,取消所有hook方法的注释;controller的onInit、onBeforeRendering、onAfterRendering和onExit,并在所有方法体中写入如下代码。sap.ui.controller("ui5lifecycledemo.main",{/***在实例化控制器且其视图控件(如果可用)*已创建时调用。*可用于在显示之前修改视图,以绑定事件处理程序*并进行其他一次性初始化。*@memberOfui5lifecycledemo.main*/onInit:function(){console.log("onInit()ofcontrollercalled...");},/***类似到onAfterRendering,但是这个钩子在控制器的*视图被重新渲染*之前被调用(不是在第一次渲染之前!onInit()用于那个!)。*@memberOfui5lifecycledemo.main*/onBeforeRendering:function(){console.log("onBeforeRendering()ofcontrollercalled...");},/***在渲染视图时调用(因此它的HTML是文档的一部分)。*HTML的渲染后操作可能在这里完成。*这个钩子与SAPUI5控件在渲染后获得的钩子相同。*@memberOfui5lifecycledemo.main*/onAfterRendering:function(){console.log("onAfterRendering()ofcontrollercalled...");},/***控制器销毁时调用。使用这个来释放资源*并完成活动。*@memberOfui5lifecycledemo.main*/onExit:function(){console.log("onExit()ofcontrollercalled...");}});DeployandRunApplication启动服务器并部署应用程序打开一个新的浏览器窗口(本示例使用Chrome浏览器)并打开开发者工具:然后在浏览器中打开以下网址http://localhost:8088/UI5Life...请根据您的服务器配置使用端口号。加载index.html将在开发人员工具控制台中打印一条日志。可以看到先调用了view的createContent()方法,然后是onInit()、onBeforeRendering(),最后是controller的onAfterRendering()方法。这些方法的目的在它们上面的评论中有详细记录。因此,我不会详细讨论它们的目的。现在,单击退出并终止控制器按钮。这将调用视图上的destroy()方法。destroy()方法清除与视图及其子元素关联的所有资源。因此,与视图关联的控制器也被销毁,因此调用其onExit()方法。更多Jerry原创文章在这里:《王子熙》:
