前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >How to change the background color of button in Footer area

How to change the background color of button in Footer area

作者头像
Jerry Wang
发布2019-06-20 09:11:21
7090
发布2019-06-20 09:11:21
举报
clipboard1
clipboard1

Opportunity的s3在init的时候有加载custom css的文件

代码语言:javascript
复制
jQuery.sap.includeStyleSheet(jQuery.sap.getModulePath("cus.crm.opportunity.css.Opportunity", ".css"), "sap-ui-theme-sap.crm");

我往这个css文件里面加一个自定义的css class

代码语言:javascript
复制
.myAwesomeBtnBackgroundColor {
background-color: red;
}

之后就找出Target button然后将这个custom css class加载上去…

代码语言:javascript
复制
var oFooter = this.getView().getController().getPage().getFooter(),
oFollowBtn = oFooter.getContentRight()[1];

oFollowBtn.addStyleClass("myAwesomeBtnBackgroundColor");

我们遇到的问题是改button text的颜色,比如把你们例子中的“follow me”字体改成蓝色。 你们email中的核心思想是找到button然后通过addStyleClass() 来修改button的css

如果我的理解没有错误的话,我已经尝试过了,但是其实修改button的css style并不能改变button text的style。

我有一个button,id是”interactionButton”它的text是“0 Requests”,我要根据不同的情况还改变 button text的颜色。

clipboard2
clipboard2

看我截图黄色highlight部分,目前我们发现只有改” interactionButton-inner”或者“interactionButton-content”的css style才能改text 的颜色,改动button “interactionButton”是不work的

clipboard3
clipboard3

曾经尝试在controller.js 的onAfterRendering方法里面通过拿到this.getView().byId(“interactionButton-inner”)或者this.getView().byId(“interactionButton-content”)来change style, 但其实在onAfterRendering方法里面,interactionButton-inner和interactionButton-content 都还没有被render,所以尝试失败

clipboard4
clipboard4

目前我们一个非常ugly的solution如下,直接修改div。。我觉得这样不是个good solution。。。。

clipboard5
clipboard5
clipboard6
clipboard6

solution

首先看为什么byId, 传button id进去能够访问到button:

clipboard7
clipboard7
clipboard8
clipboard8
clipboard9
clipboard9

因此这里有两个维度的东西:

  1. Ui5 control object – 通过上图line 307行生成。每个control object在core的this.mElements里拥有一行对应的entry。使用byId时,传入的id必须是ui5 control object的id,不能是native html tag的id。
  2. Native html tag. 在AfterRendering之前,button对应的inner div tag在此处被render。其id的naming convention就是line 99行, button本身的id + “-inner”.

但是这个native html tag并不会注册到core的this.mElements去,因此byId() query不出来。

clipboard10
clipboard10

所以再回到你的需求,button的inner div这个实现对于我们application developer是透明的。如果我们要修改text color, 只能通过button 提供的API。

但是API 文档上button只有setText的功能,那我们先看看setText 是怎么被框架实现的?

通过读代码发现和你的实现一致。

clipboard11
clipboard11

因此我们可以得出一个generic的结论:

  1. 如果需求希望修改button的属性是UI5 layer的,换句话说属性能在这个button.js里找到,则直接用button reference的API修改
clipboard12
clipboard12

2. 否则,是native layer的属性,只用通过操作dom 解决。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年06月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • solution
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档