导航后如何关注输入字段

问题描述 投票:1回答:1

从子页面返回后如何关注输入字段?

子页面

onNavigateBtnClick: function() {
    var oHistory = History.getInstance();
    var sPreviousHash = oHistory.getPreviousHash();
    if (sPreviousHash !== undefined) {
        history.go(-1);
    } else {
        var bReplace = true;
        this.getRouter().navTo("HomePage", {}, bReplace);
    }
},

父页面

onAfterRendering: function() {
    jQuery.sap.delayedCall(500, this, function() {
        this.getView().byId("InputField").focus();
    });
},

问题

  1. 第一次单击导航后退按钮时,将调用onAfterRendering挂钩。
  2. 如果我在子页面上执行某些操作,然后单击导航后退按钮,则不会调用onAfterRendering方法。
sapui5
1个回答
0
投票

解决此问题的三个步骤:

将视图的<App>标签更新为autoFocus="false"。这将防止UI5自动聚焦视图的第一个输入。

在控制器的onInit中,将方法附加到导航视图时将触发的路由,如下所示:

onInit: function(){
    var router = sap.ui.core.UIComponent.getRouterFor(this);

    router.getRoute("routeTargetName").attachPatternMatched(this.onNavTo, this);
}

在控制器中声明将设置输入焦点的onNavTo方法:

onNavTo: function(route){
    this.byId("MyInputField").focus();
}

现在,只要将路由器用于navTo("routeTargetName"),就会触发onNavTo方法,这将使焦点集中在该字段上。

© www.soinside.com 2019 - 2024. All rights reserved.