云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

百度云_消息队列有哪些_优惠券

小七 141 0

已经有一些博客在讨论UI5的反应式编程。在大多数博客中,大数据分析培训,他们使用第三方库,如:

MobX:https://blogs.sap.com/2017/01/30/advanced-state-management-in-sapui5-via-mobx/RxJS公司:https://blogs.sap.com/2018/02/17/reactive-programming-in-ui5-application/

在本博客中,我将向您展示如何仅使用UI5实现这一点。没有其他库?

在UI5Con上,Andreas Kunz宣布了ManagedObjectModel。在演示过程中,他演示了如何使用这个ManagedObjectModel将UI5控件的属性和聚合复制到新模型。您可以在这里找到幻灯片:

https://www.slideshare.net/andreaskunz/ui5con-2018-news-from-control-development

关于"ManagedObjectModel"的具体幻灯片

在这里您可以找到演示和后面的代码:

演示:https://rawgit.com/akudev/UI5con2018-ControlDevNews/master/www/ManagedObjectModel.html

代码:https://github.com/akudev/UI5con2018-ControlDevNews/blob/master/www/ManagedObjectModel.html

这种新的ManagedObjectModel比Andreas在UI5Con上展示的可能性更大。它只使用UI5而不使用第三方库就可以实现反应式编程!

我创建了一个UI5应用程序,包含所有基本组件,如组件、清单、视图和控制器,返利啦,并且只在附加的JavaScript对象上,我称之为"DemoState"。我使用"State"是因为我将使用它来保持应用程序的状态,就像MobX博客中解释的那样。

这个对象"DemoState"将从"ManagedObject"扩展而来,它的行为与UI5控件类似,阿里大数据分析,但没有呈现器功能。如果您查看UI5控件从中扩展的对象,您会注意到它从"ManagedObject"(位于中间)扩展而来。"Element"和"Control"对象正在向"ManagedObject"添加与UI相关的功能。"ManagedObject"负责控件的API。这意味着您可以像对UI5控件一样定义属性、聚合和事件。

我在"DemoState"对象中定义了两个属性,一个用于名称,另一个用于指示名称是否有效。在这个基本示例中,我将覆盖属性名的"generated"setter。每次名称更改时,它都会触发这个setter函数。在"setName"中,我将检查名称的传入值,更新name属性,并根据传入值更新有效属性。(仅供参考:ManagedObject为每个属性生成setter和getter,以防您不创建它们)

在主视图的控制器中,我只是创建了一个新的"DemoState"实例,将其放入"ManagedObjectModel"的实例中,并将此模型设置到视图中。

在视图中,我将输入字段绑定到"name"属性,将只读开关绑定到"nameIsValid"属性。valueLiveUpdate为true,大数据培训哪好,因此它将直接更新。

完整的项目结构如下:

如果您运行此操作并更改输入字段中的值,它将从您有超过5个字符的那一刻起将开关更改为绿色。

查看它的工作原理:

请自己尝试:

https://plnkr.co/edit/Ib2IqZc2IjBZN7L2AvaI?p=preview

这是一个非常基本的示例,也可以通过绑定表达式实现,而不需要额外的"nameIsValid"属性。但它向您展示了如何在不需要事件=>反应式编程的情况下对更改的值做出反应。

第一个示例非常基本,让我们尝试做一些更高级的操作。这个例子将在上一个演示的基础上更进一步,它将使用我在这个博客中描述的服务对象:

https://blogs.sap.com/2018/09/17/ui5-odata-requests-with-promises/

我建议你先看那篇博客。下面的演示还将展示使用服务对象的好处。

让我们首先向"DemoState"添加一个聚合以保留供应商列表。

正如您在供应商类型上看到的,我必须创建一个从"ManagedObject"扩展的"Supplier"对象。我只使用这个对象来定义"供应商"的结构:

在"DemoState"中,我在函数"setName"中更改了以下内容:

减少了定义名称是否有效的长度如果名称无效,请清除供应商列表为名称创建一个筛选器对象,用于在供应商中搜索运算符=包含区分大小写=错误使用NorthwindService获取与name值匹配的所有供应商将调用的结果添加到DemoState

的聚合提供者中,在视图中,我移动了输入字段并切换到子标题。在视图的内容中,我添加了一个列表来可视化供应商:

您可能没有注意到,微淘客,但我们没有更改控制器。我们只需要包含DemoState的ManagedObjectModel的setModel。其他的一切都可以在"DemoState"中完成。

我们只会在需要捕捉按键的情况下使用控制器。

最后,它会这样工作:

你可以在这里找到完整的项目:

https://github.com/lemaiwo/ManagedObjectDemo

您必须注意,此"ManagedObjectModel"目前在最新版本的SAPUI5中不可用。你只能在夜间建造中找到:

https://openui5nightly.hana.ondemand.com/#/api/sap.ui.model.base.ManagedObjectModel

即使在这里它也被标记为"expprimental":

尽管你在文档中找不到它https://ui5.sap.com/以及https://openui5.hana.ondemand.com/,它已经在那里了,但我不会建议你使用它已经用于生产应用程序。

这将改变你开发UI5应用程序的方式!