我使用这一行在view.xml中定义了一个画布元素:
<core:HTML content="<div class="wrapper col-6"><canvas id="
myChart"width="800"height="400"></canvas></div>">
</core:HTML>现在,我想在控制器中获得元素,但是即使站点成功地用ID加载画布,典型的this.getView().byId("myChart")似乎也无法工作。
是否有一种方法可以在控制器的core:HTML标记中定义这些类型的元素?
如果没有,是否有不同的方法来创建画布或其他HTML元素,以便我可以使用ID /在控制器中使用它们?
发布于 2018-11-22 16:05:16
正如Jorg所说,byId用于检索控件。因此,如果要在HTML控件上放置一个id,可以检索该控件,然后在其上调用getDomRef()来获取最外层的元素,在您的示例中,这个元素就是div。如果只将画布放入HTML控件中,就会得到它。
如果像Jorg建议的那样直接访问画布的id,那么如果要在页面内使用视图两次,就会遇到麻烦,因为画布的id不再是唯一的了。
还有第三个和IMHO更好的选择,就是直接在视图中使用html。首先,您需要为它声明一个名称空间,如
xmlns:html="http://www.w3.org/1999/xhtml“
最好就在你的视图元素上。
然后,可以在xml视图中直接编写html,如下所示:
这样,您就可以为您的画布获得一个正确的(唯一) id,并且可以使用this.getView().getDomRef("-mycanvas")作为视图的一部分访问它。注意额外的前导破折号,因为内部id生成不一致在UI5。还请注意,getDomRef()被认为是受保护的,但我怀疑它是否会改变。最后,请记住,您只能为呈现的控件获取domref,因此您可能希望通过afterRendering事件访问它。
https://stackoverflow.com/questions/53420623
复制相似问题