为什么我的视图没有按预期再次重新呈现?
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);
我创建了一个包含 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);