模型更改时刷新sapui5中的自定义控件

模型更改时刷新sapui5中的自定义控件,sapui5,Sapui5,我有一个自定义控件,它在详细视图页面中插入了多个属性。我已经用这些属性绑定了数据。场景是我有两个页面,一个是列表视图,然后是详细视图。我必须从详细信息页面返回导航,并从主页面选择差异产品。详细信息视图页面根据所选产品显示差异产品的详细信息。一切正常。但问题是我的自定义控件不更新值,而其他页面有更新的值 <custom:product topic="" subTopic="{product>name}" id="productDetial"></custom:product

我有一个自定义控件,它在详细视图页面中插入了多个属性。我已经用这些属性绑定了数据。场景是我有两个页面,一个是列表视图,然后是详细视图。我必须从详细信息页面返回导航,并从主页面选择差异产品。详细信息视图页面根据所选产品显示差异产品的详细信息。一切正常。但问题是我的自定义控件不更新值,而其他页面有更新的值

<custom:product topic="" subTopic="{product>name}" id="productDetial"></custom:product>

您只需要在控件中添加一个setter函数。当绑定刷新/更改时,UI5将触发特定于属性的setter方法。因此,对于属性子主题,它需要一个方法setSubTopic。此方法应定义您自己的逻辑,以根据需要更新UI层中的上述属性

这是您需要添加的部分代码,您还必须稍微调整初始渲染逻辑

renderer: function (oRM, oControl) {
        //oRM.write('<div class=" sapMTile customTileCourseDetail">');
        oRM.write("<div")
        oRM.writeControlData(oControl);
        oRM.addClass("sapMTile customTileCourseDetail");
        oRM.writeClasses();
        oRM.write(">");
        oRM.write('<div class="leftTileYourScore">');
        if (oControl.getSubTopic() !== "" && oControl.getSubTopic() !== undefined) {
            oRM.write(oControl.getSubTopic());
        } else {
            oRM.write("&nbsp;");
        }
        oRM.write('</div>');
        oRM.write('</div>');
    },

    setSubTopic: function(sText){
        this.setProperty("subTopic", sText, true);
        $("#"+this.sId+" .leftTileYourScore").html(sText);
    }

您必须共享更多特定于自定义控件的代码以确定问题您是否尝试刷新模型而不是控件,如下面所示。getView.getModel.refreshture;?参数true强制刷新使用正在刷新的模型的控件。是的,我已经尝试过了。即使在我使用控制台数据时,它也会给我更新的记录。但在页面上,它仍然显示前一页one@StephenS我已经更新了代码。这是我用过的结构
renderer: function (oRM, oControl) {
        //oRM.write('<div class=" sapMTile customTileCourseDetail">');
        oRM.write("<div")
        oRM.writeControlData(oControl);
        oRM.addClass("sapMTile customTileCourseDetail");
        oRM.writeClasses();
        oRM.write(">");
        oRM.write('<div class="leftTileYourScore">');
        if (oControl.getSubTopic() !== "" && oControl.getSubTopic() !== undefined) {
            oRM.write(oControl.getSubTopic());
        } else {
            oRM.write("&nbsp;");
        }
        oRM.write('</div>');
        oRM.write('</div>');
    },

    setSubTopic: function(sText){
        this.setProperty("subTopic", sText, true);
        $("#"+this.sId+" .leftTileYourScore").html(sText);
    }