我面临以下问题。我有一个片段:
<core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:layout="sap.ui.layout" >
<Dialog title="Hints" class="sapUiPopupWithPadding" contentWidth="60%">
<content>
<Table id="tblHintList" mode="SingleSelect" items="{HintList>/}" growing="true" growingThreshold="10" selectionChange="onGetSelectedHints">
</Table>
</content>
</Dialog>
</core:FragmentDefinition>
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我想通过 ID 访问表,如下所示:
var table = this.getView().byId("tblHintList");
this.getView().addDependent(Fragment)
即使我打电话并且数据绑定正在工作,这也不起作用。
如何访问片段中定义的控件?
一般来说,您必须区分这些用例:片段是否是您视图的一部分。您正在实例化带有或不带有 ID 的片段。
在您的情况下,片段不是视图的一部分,因为它是一个对话框。在这种情况下,您将获得表控件,如下所示:
var table = sap.ui.getCore().byId("tblHintList");
Run Code Online (Sandbox Code Playgroud)
假设您使用 ID“myDialog”来实例化片段,如下所示:
var dialog = sap.ui.xmlfragment("myDialog", "my.package.HintListDialog");
Run Code Online (Sandbox Code Playgroud)
然后您将获得表控件,如下所示:
var table = sap.ui.core.Fragment.byId("myDialog", "tblHintList");
Run Code Online (Sandbox Code Playgroud)
一般来说,您不应该按照之前答案中的建议自行组装控件 ID。