从子页面返回后如何关注输入字段?
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();
});
},
onAfterRendering
挂钩。onAfterRendering
方法。解决此问题的三个步骤:
将视图的<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
方法,这将使焦点集中在该字段上。