复合控件事件未触发



>我有一个控件如下

我需要在单击关闭图标时触发事件关闭

sap.ui.define(["sap/ui/core/Control",
           "sap/m/Carousel",
           "sap/m/Panel",
           "sap/m/Toolbar",
           "sap/ui/core/Icon",
           "sap/m/Label",
           "sap/m/Button",
           "sap/m/ToolbarSpacer"], function (Control,Carousel,Panel,Toolbar,Icon,Label,Button,ToolbarSpacer) {
"use strict";
return Control.extend("com.example.Control", {
    metadata : {
        aggregations : {
            _panel : {
                 type : "sap.m.Panel",
                 multiple: false,
                 visibility:'hiddden'
            }            
        },
        events : {
            closed : {
            }
        }
    },
    renderer  : function (oRM, oControl) {
        oRM.write("<div");
        oRM.writeControlData(oControl);
        oRM.addClass("sapUiSizeCompact");
        oRM.writeClasses();
        oRM.write(">");
        oRM.renderControl(oControl.getAggregation("_panel"));
        oRM.write("</div>");
    },
    init : function () {
        var that = this;
        var _carousel = new Carousel({
            pages : [new Label({
                text : "Test"
            }),
            new Label({
                text : "Test"
            })]
        });
        var _closeIcon = new Icon({
            src : "sap-icon://decline",
            press :jQuery.proxy(this.onCloseInfoWindow,this)
        });
        var _toolBar = new Toolbar({
            content : [
                       new Label({
                           text :"Information"
                       }),
                       new ToolbarSpacer(),
                       _closeIcon,
                     ]
        });
        var _panel = new Panel({
            headerToolbar : _toolBar
        });
        _panel.addContent(_carousel);
        this.setAggregation('_panel',_panel);
    },
    onCloseInfoWindow : function(oEvent){
    }
});
});

当单击关闭图标时,onCloseInfoWindow不会触发新闻事件

我是否需要将图标也添加为聚合并需要渲染?

是否要触发在自定义控件中创建的closed事件?

使用以下代码从自定义控件调用已关闭的事件:

onCloseInfoWindow : function(oEvent){
        //console.log('Called');
        this.fireClosed(oEvent);
    }

查看 XML:在这里,控件是我的控件名称。

<c:Control closed='onClose'/>

控制器

onClose:function(oEvent) {
        console.log('Closed Called!');
    }

你为什么要用press :jQuery.proxy(this.onCloseInfoWindow,this)?我从未在ui5中使用过jQuery.proxy。要触发关闭函数,您可以执行

var _closeIcon = new Icon({
        src : "sap-icon://decline",
        press : function(oEvent){
             this.fireClosed(oEvent);
        }.bind(this)
    });

最新更新