为什么我的视图没有按预期再次重新呈现?

Why isn't my view re-rendered again as expected?

我创建了一个包含 currentValue 属性 的自定义控件。我在元数据中定义如下:

properties: 
{
    currentValue: 
    {
        type: 'int',
        defaultValue: 0
    },...

在我的 Main.controller.js 中,我正在调用我创建的自定义控件并更改它的 currentValue 属性,如下所示。

var oCustomControl = this.getView().byId("customID1");
oCustomControl.setCurrentValue(75);

在我 control.js 的这一步中,我没有创建 setCurrentValue 函数。因为我知道 UI5 正在创建它自己。但是我的控件的 currentValue 属性 无法更新。所以我认为我的控件无法重新渲染。所以我覆盖了 currentValue setter 并将其更改如下:

setCurrentValue : function(iCurrentValue)
{
    this.setProperty("currentValue", iCurrentValue);
},

但我仍然看不到我在视图中更改的值。

这是我的渲染器:

renderer : 
{

    render : function(oRm, oControl) {



        var layout = oControl.createGauges();//I created layout

        oRm.write("<div");
        oRm.writeControlData(layout);
        oRm.writeClasses(); 
        oRm.write(">");
        oRm.renderControl(layout);
        oRm.addClass('verticalAlignment');
        oRm.write("</div>");
    }
},

我现在在想,也许是因为我正在将布局渲染为控件?

我的其他属性与d3.js有关。我在 onAfterRendering 函数中编写了 d3.js 代码。

实际上你的代码看起来不错。 接受您指定的内容:

bindable: 'bindable'

那应该怎么办? rerender() 是什么?

呈现控件的方法称为 renderer()

但是你说的时候不需要调用它:

this.setProperty("currentValue", iCurrentValue);

如果你不说 true 它将重新呈现控件。

很高兴知道您的 renderer() 函数中有什么,或者当您调用 getCurrentValue().

时会发生什么

通过更改解决

oRm.writeControlData(layout); 这一行如下:

oRm.writeControlData(oControl);