相关疑难解决方法(0)

每次查看页面时如何执行代码

我每次查看页面时都会搜索模式以执行代码(在我的情况下,检索数据以便从服务器可视化)(每个tipe页面都由splitApp.toDetail或splitApp.backDetail调用).我该怎么做??onBeforeRendering和onAfterRendering仅在第一次执行..

sapui5

11
推荐指数
3
解决办法
1万
查看次数

SAPUI5 - 每次显示视图时调用哪种方法?

我希望在每次显示视图之前做一些逻辑.我不能在渲染方法之前使用它,因为它只在创建视图时被调用一次并且首次显示.帮助.任何想法?

sapui5

9
推荐指数
2
解决办法
5万
查看次数

如何在视图中设置初始焦点?

我在 SAPUI5 应用程序中有一个 Detail 视图,其中包含一个 ID 的输入字段"bestellmenge_tu"。每当调用此视图时,焦点应位于该输入字段上。不幸的是,当在控制器的onInit方法中将焦点设置在字段上时,焦点将被设置,但几毫秒后 UI5 将其拿走并将其转移到详细信息视图的“导航返回”按钮。

通过将 alog.trace()放在输入字段的blur事件上,我发现焦点被一个sap.ui.define.NavContainer._afterTransitionCallback被调用的方法夺走了,该方法被异步调用(window.setTimeout触发器和执行之间的一些s)。该函数只是在视图中查找第一个可聚焦的元素,然后粗暴地将焦点切换到它上面。

我的解决方法是重新定义jQuery.fn.firstFocusableDomRef用于查找“第一个可聚焦元素”的方法:

// DIESE KANONE FUNKTIONIERT
jQuery.fn.firstFocusableDomRef = (function() {
  var _default = jQuery.fn.firstFocusableDomRef;
  return function() {
    var bestellmenge_tu = document.querySelector("input[id$='bestellmenge_tu-inner']");
    if (bestellmenge_tu &&
        bestellmenge_tu.style.display !="none" &&
        bestellmenge_tu.style.visibility != "hidden") return bestellmenge_tu;
    else return _default.apply(this);
  }
})();
Run Code Online (Sandbox Code Playgroud)

但这可能是一个性能问题(querySelector在此后的任何页面加载的DOM 横向期间调用),并且对于所需的效果来说代码太多。

有没有更简单的方法来实现这一目标?

我想到了类似的东西

<mvc:View controllerName="zrt_dispo.view.Detail"...>
  <Page id="detailPage" initialFocus="bestellmenge_tu">  <!-- ID of the element to …
Run Code Online (Sandbox Code Playgroud)

sapui5

3
推荐指数
1
解决办法
6725
查看次数

方法onBeforeRendering未调用

我尝试创建一个SAPUI5/OPENUI5应用程序.为此,我使用了一些XML视图,并在路由器之间进行导航.现在我想在每次打开特定视图时调用方法.在阅读了"onBeforeRendering"方法解决了这种情况之后,我实现了这个功能.当我第一次导航到视图时,使用了该方法,但在第二次调用中没有.

这里是View-Controller的代码:

sap.ui.define([
"sap/ui/core/mvc/Controller",
"sap/ui/model/json/JSONModel"],
function(Controller , JSONModel) {"use strict";

return Controller.extend("Spellcheck.controller.Result", {

    onBeforeRendering: function() {
        this.model = new sap.ui.model.json.JSONModel({
            suggestionData: []
        });
        this.getView().setModel(this.model);

       this.model.refresh();
       this.getCorrections();
    },

    getCorrections : function() {
      //...some other code...
    }
Run Code Online (Sandbox Code Playgroud)

我希望有人知道我的问题的原因和/或合适的解决方案

提前致谢!!!

蒂姆

sapui5

1
推荐指数
1
解决办法
1040
查看次数

标签 统计

sapui5 ×4