我创建了一个包含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代码。
答案 0 :(得分:1)
实际上你的代码看起来很好。 接受您指定的内容:
bindable: 'bindable'
该怎么办?
什么是rerender()
?
呈现控件的方法称为renderer()
。
但是当你说:
时,你不需要打电话this.setProperty("currentValue", iCurrentValue);
如果你不这么说,它会重新呈现控制权。
最好知道renderer()
功能中的内容,或者拨打getCurrentValue()
时会发生什么。
答案 1 :(得分:0)
通过更改
解决 oRm.writeControlData(layout);
这一行如下:
oRm.writeControlData(oControl);