gpt4 book ai didi

javascript - sapui5 sap.m.popover 无法打开我的控件

转载 作者:行者123 更新时间:2023-12-02 13:59:46 24 4
gpt4 key购买 nike

我有一个按钮:

var oButton = new sap.m.Button({
text: "Press me",
press: function (oEvent) {
if (! this._oPopover) {
this._oPopover = sap.ui.xmlfragment("sap.my.library.Popover", this);
this._oPopover.setModel(true);
}
var oButton = oEvent.getSource();
var oMyControl= this._oPopover.getAggregation('content')[0];
oMyControl.setPlaceholder("Hello World");
jQuery.sap.delayedCall(0, this, function () {
this._oPopover.openBy(oButton);
});
}
})

我有我的 xml 片段:

<core:FragmentDefinition
xmlns="sap.m"
xmlns:core="sap.ui.core"
xmlns:d="sap.my.library">
<Popover>
<d:myControl value=""/>
<!--<Input></Input>-->
</Popover>
</core:FragmentDefinition>

现在,当我单击该按钮时,什么也没有发生,只有当我多次单击它时,我的控件才会出现。我可以说,每点击 10 次快速按钮,我的控件可能就会出现一次。

有什么建议吗?谢谢!

最佳答案

this._oPopover 在按钮声明中声明的匿名函数中定义。

它不能像您可能期望的那样引用 View 字段。

我的建议:

var onButtonPress = function (oEvent) {
if (! this._oPopover) {
this._oPopover = sap.ui.xmlfragment("sap.my.library.Popover", this);
this._oPopover.setModel(true);
}
var oButton = oEvent.getSource();
var oMyControl= this._oPopover.getAggregation('content')[0];
oMyControl.setPlaceholder("Hello World");
jQuery.sap.delayedCall(0, this, function () {
this._oPopover.openBy(oButton);
});
}

var oButton = new sap.m.Button({
text: "Press me",
press: this.onButtonPressed.bind(this)
});

[代码未测试!]

关于javascript - sapui5 sap.m.popover 无法打开我的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40491335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com