SAP UI5 里如何让每次视图显示时都执行某方法

简介: 原文:SAPUI5: How to Call a Method Every Time a View Is Displayed?

本文介绍每次在 SAPUI5 中显示视图时如何执行方法。


有两种方法可以实现这一点。


SAPUI5 提供了两种每次调用视图时执行代码的方法:


视图控制器中的生命周期钩子

路由匹配事件等路由机制

例如,调用自定义方法,或执行 CRUD 请求(创建、读取、更新、删除)。


#1. SAPUI5 Life Cycle Hooks in a View’s Controller


onBeforeRendering:每次重新渲染视图之前执行代码。

onAfterRendering:每次渲染视图时执行代码。

除了 onBeforeRendering 和 onAfterRendering 生命周期钩子之外,还有 onInit 和 onExit 钩子。


另一方面,对于每个视图实例,onBeforeRendering 和 onAfterRendering 钩子只调用一次:在实例化和销毁视图之后。


下面是如何在控制器中使用 onBeforeRendering 和 onAfterRendering 钩子的示例:

// in your controller
...
// hook gets invoked before the view gets rendered
onBeforeRendering: function() {
  this.log("view gets rendered);
},
// hook gets invoked after the view is rendered  
onAfterRendering: function() {
      this.log("view is rendered);
},
log: function(sMessage) {
  sap.base.Log.info(sStatus);
}
...

#2. SAPUI5 Routing Mechanisms: Route Matched and Route Pattern Matched Events


如果您的应用程序使用 SAPUI5 路由框架,您可以利用其机制在每次调用视图时调用您自己的代码。


SAPUI5 URL 具有 URL 哈希。


例如,如果 URL 是 webapp/index.html#/products/3,则 URL 哈希是 #/products/3。


routeMatched 和 routePatternMatched 事件根据 manifest.json 中的路由设置检查 URL 哈希。


每次 URL 哈希匹配时,该事件都会被触发。


每次导航到视图及其 URL 时,都会触发路由器事件。


为了更清楚地说明:


一方面,路由器事件检查视图的正确 URL 是否被调用,并且包括例如一个有效的参数,如对象 ID。


另一方面,只要通过有效的路由 URL 调用视图,就会触发路由器事件。


下面是 routeMatched 和 routePatternMatched 事件之间的区别:


routeMatched:每次 URL 的哈希匹配当前视图的路由模式的任何路由、子路由或嵌套路由时调用。


routePatternMatched:每次 URL 的哈希与当前视图的路由模式的路由匹配时调用。


设置路由器事件需要两个步骤:


在 SAPUI5 应用程序 manifest.json 中设置路由。

在 XML 视图控制器中设置事件。

#1 Set Up Routing in the manifest.json


SAPUI5 应用程序的路由及其视图的路由和模式在 manifest.json 中设置。


例如:

// in your manifest.json
...
"sap.ui5": {
  ...
  "routing": {
    "config": {
      ...
    },
    "routes": [{
      "pattern": "",
      "name": "Home",
      "target": "home"
    }, 
    {
      "pattern": "products",
      "name": "Products",
      "target": "products"
    }, 
    {
       "pattern": "products/{productId}",
       "name": "Product",
       "target": "product"
    }],
    "targets": {
      "home": {
        "viewId": "home",
        "viewName": "Home"
      },
      "employees": {
        "viewId": "products",
        "viewName": "Products"
      },
      "employee": {
         "viewId": "product",
         "viewName": "Product"
       }
    }
  }
}

二、routePatternMatch 事件的例子:

// in the Product controller
// manifest.json routing pattern: products/{productId}
// URL: <your_app>#/products/product/<productId>
// URL hash: #/products/product/<productId>
sap.ui.define([
  "sap/ui/core/mvc/Controller"
], function(Controller) {
  "use strict";
  return Controller.extend("my.app.controller.products.Product", function() {
    onInit: function() {
      var oRouter = this.getRouter();
      // attach routePatternMatched event
      oRouter.getRoute("product").attachRoutePatternMatched(this._onRoutePatternMatched, this);
    },
    _onRoutePatternMatched: function(oEvent) {
      // gets called for ...#/products/Product/<productId>
      // for example: ...#/products/Product/1
      // or ...#/products/Product/123
    }
  });
});
相关文章
|
2月前
|
开发框架 前端开发 JavaScript
在Winform程序中增加隐藏的按键处理,用于处理一些特殊的界面显示或者系统初始化操作
在Winform程序中增加隐藏的按键处理,用于处理一些特殊的界面显示或者系统初始化操作
|
XML Web App开发 JavaScript
通过 FileUploader 的初始化,了解 SAP UI5 应用的 StaticArea 初始化逻辑
通过 FileUploader 的初始化,了解 SAP UI5 应用的 StaticArea 初始化逻辑
|
Web App开发 数据库 开发者
SAP UI5 Fiori 应用在启动时向 ABAP 后台发起的 OData 请求序列的顺序和作用分析
SAP UI5 Fiori 应用在启动时向 ABAP 后台发起的 OData 请求序列的顺序和作用分析
SAP DALOG开发-代码触发回车事件
对于指定输入框:触发屏幕回车事件
221 0
为什么有时候在子线程更新UI没报错?
为什么有时候在子线程更新UI没报错?
147 0
为什么有时候在子线程更新UI没报错?
|
XML 网络架构 数据格式
SAP UI5 里如何让每次视图显示时都执行某方法
SAP UI5 里如何让每次视图显示时都执行某方法
113 0
SAP UI5 里如何让每次视图显示时都执行某方法
|
XML 数据格式
SAP UI5 确保控件 id 全局唯一的实现方法
SAP UI5 确保控件 id 全局唯一的实现方法
SAP UI5 确保控件 id 全局唯一的实现方法
|
XML 数据格式 容器
如何找到SAP UI5控件ID生成的准确时间点和代码位置
如何找到SAP UI5控件ID生成的准确时间点和代码位置
如何找到SAP UI5控件ID生成的准确时间点和代码位置
|
存储 XML 自然语言处理
深入学习SAP UI5框架代码系列之五:SAP UI5控件的实例数据修改和读取逻辑
深入学习SAP UI5框架代码系列之五:SAP UI5控件的实例数据修改和读取逻辑
303 0
深入学习SAP UI5框架代码系列之五:SAP UI5控件的实例数据修改和读取逻辑
|
XML 前端开发 JavaScript
SAP UI5 的初始化过程
SAP UI5 的初始化过程
129 0
SAP UI5 的初始化过程