摘要:答案是可以像普通的控件一样在中被定义和使用,但是必须结合,否则没有意义。也就是说您可以创建一个很简单的,然后在这个里像使用普通控件那样使用,没有任何问题。在时,它会自动被渲染成带单位的。后面那个的就像变戏法一样生成了,其实就是这个起的作用。
我的同事问过我这个问题:
只要弄清楚Smart control的原理,就能回答这个问题。
答案是: smart control可以像普通的控件一样在xml view中被定义和使用,但是必须结合OData annotation,否则没有意义。以Smart control里的Smart field为例,详细原理在我的博客Currency example – how Smart field works里介绍。
概括起来,就是:
1. Smart field本身也是一个控件,更准确的说是一个没有UI输出的控件,只是一个壳。在UI render的时候,smart field会演变成input field,还是drop down list,还是date picker,还是F4 help,这些都需要有一个角色来告诉smart field,这个角色就是Odata annotation。Metadata里定义的annotation会决定smart field最后的输出方式。
2. Smart control可以脱离Smart template框架多带带使用。也就是说您可以创建一个很简单的xml view,然后在这个view里像使用普通控件那样使用smart control,没有任何问题。
请参考这个例子(完整实现代码在文末):
在XML view里,我定义了一个Smart field,绑到Price这个property上。
在runtime时,它会自动被渲染成带单位的currency field。后面那个EUR的currency field就像变戏法一样生成了,其实就是sap:unit="CurrencyCode"这个annotation起的作用。至于框架是如何解析annotation并自动生成currency field,相关的代码和分析都在上述提到的博客Currency example – how Smart field works里。
该Fiori应用的目录结构:
源代码地址
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/51892.html
摘要:答案是可以像普通的控件一样在中被定义和使用,但是必须结合,否则没有意义。也就是说您可以创建一个很简单的,然后在这个里像使用普通控件那样使用,没有任何问题。在时,它会自动被渲染成带单位的。后面那个的就像变戏法一样生成了,其实就是这个起的作用。 我的同事问过我这个问题: showImg(https://segmentfault.com/img/remote/1460000013375524...
摘要:答案是可以像普通的控件一样在中被定义和使用,但是必须结合,否则没有意义。也就是说您可以创建一个很简单的,然后在这个里像使用普通控件那样使用,没有任何问题。在时,它会自动被渲染成带单位的。后面那个的就像变戏法一样生成了,其实就是这个起的作用。 我的同事问过我这个问题: showImg(https://segmentfault.com/img/remote/1460000013375524...
摘要:答案是可以像普通的控件一样在中被定义和使用,但是必须结合,否则没有意义。也就是说您可以创建一个很简单的,然后在这个里像使用普通控件那样使用,没有任何问题。在时,它会自动被渲染成带单位的。后面那个的就像变戏法一样生成了,其实就是这个起的作用。 我的同事问过我这个问题: showImg(https://segmentfault.com/img/remote/1460000013375524...
摘要:从调用栈能清楚发现是这个事件触发的第二批的读取动作。然后再去这一个调用栈,发现一个属性维护了一个开始索引,每次到底部的事件触发之后,该属性值都会被累加。这些库文件一览在开发者工具查看从后台加载的库文件,能发现属性在此处被硬编码成。 今天一同事问我这个问题:S/4HANA Fiori应用里的列表,一旦Scroll到底部就会自动向后台发起新的请求把更多的数据读取到前台显示。 以Produc...
阅读 1652·2021-10-13 09:39
阅读 2065·2021-09-07 10:20
阅读 2636·2019-08-30 15:56
阅读 2928·2019-08-30 15:56
阅读 913·2019-08-30 15:55
阅读 595·2019-08-30 15:46
阅读 3449·2019-08-30 15:44
阅读 2530·2019-08-30 11:15