sapui5访问没有ID的控制器

时间:2019-03-05 19:32:22

标签: sapui5

我是sapui5的新手。我有一个列表,其中每个元素都包含一个按钮和一个图像。我想通过按按钮更改图像src(仅图像是与按钮相同的列表元素的一部分)。是否可以通过id访问图像? (怎么做?)

Xml代码:

<List items="{data>/Stages}">
   <CustomListItem>
      <Panel>
         <headerToolbar>
            <Toolbar class="topDetailToolbar" style="Clear">
               <Title class="sapUiSmallMarginBegin fieldWorkTitle" text="{data>Name}" titleStyle="H2" />
               <ToolbarSpacer />
               <Button text="{i18n>TECH_CARD_ROLL}" class="addButton sapUiSmallMarginBottom" press="onVisibleFilters" />
               <core:Icon src="sap-icon://navigation-up-arrow" size="1rem" color="#00c0db" visible="{confFilter>/filterUp}" />
            </Toolbar>
         </headerToolbar>
      </Panel>
   </CustomListItem>
</List>

2 个答案:

答案 0 :(得分:0)

这是您应该做的:

var oButton = oEvent.getSource(); //this returns the button which triggers the press event
var oListItem = oButton.getParent(); //returns the listItem in which the button was pressed

var aCells = oListItem.getAggregation("cells"); 

您应该能够在cells数组的索引之一中找到图像。

答案 1 :(得分:0)

您可以通过向图标添加样式class并使用jQuery获取图标实例并使用setSrc()重置图标实例来实现它

事件处理程序-onVisibleFilters更改图标src

onVisibleFilters: function(oEvent) {
  var oToolbarId = oEvent.getSource().getParent().sId;//get Parent toolbar of button
  var sIconId = jQuery("#" + oToolbarId).find(".hdrIcon").attr("id");//get Icon id using jQuery and hdrIcon class
  if(sIconId) {
      var oIcon = sap.ui.getCore().byId(sIconId);
      if(oIcon) oIcon.setSrc("sap-icon://lab");//update the icon src  
  }
}