レスポンスポップアップには、「削除」モードのリストが含まれています。 アイテムを削除するためにクリックすると、プレスで関数が呼び出されます。 'this'はoListであり、oEvent.oSourceはoListです。 イベント関数内から、私のコントローラで関数を呼び出す必要があります。 sap..core..byId( "Detail")やフルネームスペースを使用していなくても、コントローラを参照する方法が見つかりません。 oEvent.oSource.getParent()。getParent()からelemntツリーを歩いてみると、.getController()が呼び出されましたが、それは行き止まりです。あなたがフラグメントからあなたのポップアップをインスタンス化するとき、ユーザーが指定することができますレスポンシブポップアップのイベント機能内からのコントローラからのコール機能
handlePressViewSelection: function(oEvent) {
var oResourceBundle = this.getResourceBundle();
//create the list
var oList = new sap.m.List({
mode: "Delete",
delete: this.handleDeleteSelectionItem
});
oList.setModel(this._oSelectedTrainingsModel);
var oItemTemplate = new sap.m.StandardListItem({
title : "{Title}",
description : "{=${Begda} ? ${Type} - { path: 'Begda', type: 'sap.ui.model.type.Date', formatOptions: { style: 'medium' }} : ${Type}}",
icon : "{icon}",
iconInset : false
});
oList.bindAggregation("items", {
path: "/",
template: oItemTemplate,
type: "Active"
});
var oBeginButton = new sap.m.Button({
text: "Action1",
type: sap.m.ButtonType.Reject,
press: function(){
oResponsivePopover.setShowCloseButton(false);
}
});
var oEndButton = new sap.m.Button({
text: "Action2",
type: sap.m.ButtonType.Accept,
press: function(){
oResponsivePopover.setShowCloseButton(true);
}
});
var oResponsivePopover = new sap.m.ResponsivePopover({
placement: sap.m.PlacementType.Bottom,
title: "",
showHeader: false,
beginButton: oBeginButton,
endButton: oEndButton,
horizontalScrolling: false,
content: [
oList
]
});
oResponsivePopover.openBy(oEvent.oSource);
},
handleDeleteSelectionItem: function(oEvent) {
var oListItem = oEvent.getParameter('listItem');
var oList = oListItem.getParent();
var path = oListItem.getBindingContext().sPath;
oList.getModel().getData().splice(parseInt(path.substring(1)), 1);
oList.removeItem(oEvent.getParameter('listItem'));
oList.getParent().getParent().getController()._updateViewSelectionButtonText(); //--> BROKEN
},
そして、あなたがフラグメントを使用していないときに、純粋にJSでポップオーバーを作成するときは? – Pieter
ポップオーバーコントロールをインスタンス化するコードを使用して質問を更新できますか? – Qualiture
Pieter、あなたはコントローラの中でポップオーバーを作成していると思いますか?はいの場合は、bind(this)を使うことができます。おそらく、元の投稿のコードを引用する必要があります。 – slkorolev