使用XML-View将浏览器事件附加到控件

pad*_*bro 1 sapui5

我的REST服务向我发送了很多数据。每个属性都包含value和属性,该属性包含help对字段属性的详细说明。

好的,我在JSONModel中有数据(带有值和帮助的属性列表),并且我使用了数据绑定XML https://openui5.hana.ondemand.com/#docs/guide/91f0f3cd6f4d1014b6dd926db0e91070.html将数据映射value为表单和桌子。现在,我想以某种方式help显示每个属性的消息。

我的想法是 当用户双击表中列标题的“ 标签”或“ 文本 ” 时显示一个消息对话框

Label和Text都具有attachBrowserEvent方法,但是我不知道如何使用该函数附加仅在XML视图中冲洗的事件

我想要这样的东西:

在XML视图中:

<Label text="Language" 
          attachBrowserEvent:"function("click",showMessageHelp({model>/language/help}))">

<Input value="{model>/language/value}"/>
Run Code Online (Sandbox Code Playgroud)

在控制器中:

showMessageHelp:function(sMessage){

//show message dialog with sMessage
...........
}
Run Code Online (Sandbox Code Playgroud)

Sun*_*B N 5

您可以使用onAfterRendering方法来实现。在XML中包含CustomData:

<Label id="label" text="Language">
    <customData>
          <core:CustomData key="type" value="{/language/help}" />
    </customData>
</Label>
Run Code Online (Sandbox Code Playgroud)

然后在控制器中使用以下customData:

  onAfterRendering: function () {
        var showValueHelp = function () {
            var text = this.getCustomData()[0].getValue();
            sap.m.MessageToast.show(text);
            event.preventDefault();
            event.stopPropagation();
            return false;
        };

        this.byId("label").attachBrowserEvent("click", showValueHelp);
    }
Run Code Online (Sandbox Code Playgroud)

JS小提琴在这里

PS:我不确定这对您来说是否可行。目前,这是我能想到的最好的方法。