Sapui5 如何检查是否呈现UI5控件?

Sapui5 如何检查是否呈现UI5控件?,sapui5,rendering,popover,Sapui5,Rendering,Popover,我正在FlexColumnLayout中的特定控件上打开popover。根据屏幕大小,一旦中间列展开,它将不会被渲染 我想在打开popover之前检查cotrol是否渲染,但我似乎找不到允许这样做的属性 已经尝试过此帖子的解决方案: 如果您想在实际代码中进行测试,只需使用FlexColumnLayout的演示应用程序,并在展开“开始”列时尝试在其中一个隐藏按钮上打开一个弹出窗口 谢谢你的帮助,埃里克 编辑27.08.18(有问题的代码): 控制器: /** * Listner. Trigge

我正在FlexColumnLayout中的特定控件上打开popover。根据屏幕大小,一旦中间列展开,它将不会被渲染

我想在打开popover之前检查cotrol是否渲染,但我似乎找不到允许这样做的属性

已经尝试过此帖子的解决方案:

如果您想在实际代码中进行测试,只需使用FlexColumnLayout的演示应用程序,并在展开“开始”列时尝试在其中一个隐藏按钮上打开一个弹出窗口

谢谢你的帮助,埃里克

编辑27.08.18(有问题的代码):

控制器:

/**
* Listner. Triggered when help is canceled.
* Closes popover.
* @author WN00096217 (Eric Schuster)
* @memberof xxxxxxxxxxxx
* @function onHelpCancel
*/
onHelpCancel: function () {
    var iHelp = this._oHelpModel.getProperty("/counter");
    this._oHelpModel.setProperty("/counter", 0);
    this._oHelpModel.getProperty("/p" + iHelp).close();
},

/**
 * Listner. Triggered when help is continue.
 * Closes popover, opens next popover.
 * @author WN00096217 (Eric Schuster)
 * @memberof xxxxxxxxxxxxxxxxxxx
 * @function onHelpNext
 */
onHelpNext: function () {
    var iHelp = this._oHelpModel.getProperty("/counter");
    this._oHelpModel.setProperty("/counter", iHelp + 1);
    this._oHelpModel.getProperty("/p" + iHelp).close();
    this._oHelpModel.getProperty("/p" + (iHelp + 1)).openBy(this._oHelpModel.getProperty("/c" + (iHelp + 1)));
},
var oControl = this.byId("yourControl");

oControl.isActive(); // true if the control is visible
控制器(innit的一部分):

组成部分(INIT的一部分):

我希望控制器看起来像什么:

/**
 * Listner. Triggered when help is continue.
 * Closes popover, opens next popover.
 * @author WN00096217 (Eric Schuster)
 * @memberof xxxxxxxxxxxxxxxxx
 * @function onHelpNext
 */
onHelpNext: function () {
    var iHelp = this._oHelpModel.getProperty("/counter");
    if("control is rendered"){
        this._oHelpModel.setProperty("/counter", iHelp + 1);
        this._oHelpModel.getProperty("/p" + iHelp).close();
        this._oHelpModel.getProperty("/p" + (iHelp + 1)).openBy(this._oHelpModel.getProperty("/c" + (iHelp + 1)));
    } else {
        this._oHelpModel.setProperty("/counter", iHelp + 1);
        this.onHelpNext();
        return;
    }
},

使用控件的
onAfterRendering
事件。在相应视图的
控制器中

var oControl = this.byId("yourControl");

oControl.addEventDelegate({
    onAfterRendering: function() {

        // your confirmation that the control is rendered

    }
}
op澄清后更新

如果控件还没有id,则给它一个id。通过控件id获取控件。检查控件是否处于活动状态。在相应视图的控制器中:

/**
* Listner. Triggered when help is canceled.
* Closes popover.
* @author WN00096217 (Eric Schuster)
* @memberof xxxxxxxxxxxx
* @function onHelpCancel
*/
onHelpCancel: function () {
    var iHelp = this._oHelpModel.getProperty("/counter");
    this._oHelpModel.setProperty("/counter", 0);
    this._oHelpModel.getProperty("/p" + iHelp).close();
},

/**
 * Listner. Triggered when help is continue.
 * Closes popover, opens next popover.
 * @author WN00096217 (Eric Schuster)
 * @memberof xxxxxxxxxxxxxxxxxxx
 * @function onHelpNext
 */
onHelpNext: function () {
    var iHelp = this._oHelpModel.getProperty("/counter");
    this._oHelpModel.setProperty("/counter", iHelp + 1);
    this._oHelpModel.getProperty("/p" + iHelp).close();
    this._oHelpModel.getProperty("/p" + (iHelp + 1)).openBy(this._oHelpModel.getProperty("/c" + (iHelp + 1)));
},
var oControl = this.byId("yourControl");

oControl.isActive(); // true if the control is visible

使用控件的
onAfterRendering
事件。在相应视图的
控制器中

var oControl = this.byId("yourControl");

oControl.addEventDelegate({
    onAfterRendering: function() {

        // your confirmation that the control is rendered

    }
}
op澄清后更新

如果控件还没有id,则给它一个id。通过控件id获取控件。检查控件是否处于活动状态。在相应视图的控制器中:

/**
* Listner. Triggered when help is canceled.
* Closes popover.
* @author WN00096217 (Eric Schuster)
* @memberof xxxxxxxxxxxx
* @function onHelpCancel
*/
onHelpCancel: function () {
    var iHelp = this._oHelpModel.getProperty("/counter");
    this._oHelpModel.setProperty("/counter", 0);
    this._oHelpModel.getProperty("/p" + iHelp).close();
},

/**
 * Listner. Triggered when help is continue.
 * Closes popover, opens next popover.
 * @author WN00096217 (Eric Schuster)
 * @memberof xxxxxxxxxxxxxxxxxxx
 * @function onHelpNext
 */
onHelpNext: function () {
    var iHelp = this._oHelpModel.getProperty("/counter");
    this._oHelpModel.setProperty("/counter", iHelp + 1);
    this._oHelpModel.getProperty("/p" + iHelp).close();
    this._oHelpModel.getProperty("/p" + (iHelp + 1)).openBy(this._oHelpModel.getProperty("/c" + (iHelp + 1)));
},
var oControl = this.byId("yourControl");

oControl.isActive(); // true if the control is visible

在开始时(开始列展开),始终渲染,但一旦导航到中间列展开,可能会渲染,也可能不会渲染!因此,在任何情况下都会调用onAfterRendering,因此如果控件在此时呈现,它将不会是一个确认。呃,您能提供一些代码吗?思考会使事情变得更容易。@zYrEx代码现在被编辑到问题中,怀疑它是否会有帮助。思考在开始时(开始列展开),始终呈现,但一旦导航到中间列展开,它可能会呈现,也可能不会呈现!因此,在任何情况下都会调用onAfterRendering,因此如果控件在此时呈现,它将不会是一个确认。呃,您能提供一些代码吗?“思考会让事情变得更简单。”zYrEx代码现在被编辑到问题中,但我怀疑它是否有帮助