SAPUI5 XML视图和控制器
当我看Developer Guide的SAPUI5网站上,这是他们如何声明一个XML视图:SAPUI5 XML视图和控制器
<mvc:View
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc" controllerName="">
</mvc:View>
和控制器的定义是这样的:
sap.ui.define([
"sap/ui/core/mvc/Controller"
], function (Controller) {
"use strict";
return Controller.extend("", {
});
});
然而,当我在Eclipse中创建SAPUI5项目并使用选项New> SAPUI5 Application Development> View时,它会创建一个视图和一个如下所示的控制器:
<core:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m"
controllerName="" xmlns:html="http://www.w3.org/1999/xhtml">
</core:View>
sap.ui.controller("", {
});
一方面,以上述方式创建视图使我无法每次输入基本语法,另一方面,开发人员指南(特别是控制器)中的语法看起来更有组织性。
为什么我应该使用一种或另一种语法是否有特定的原因?或者我可以使用任何一种方法,在编程方面没有任何区
我使用v1.32进行开发。
非常感谢。
第一种语法(sap.ui.define
)是首选语法。它也被称为AMD(异步模块声明)语法(请参阅this Wiki article for more information)。它包装在一个函数调用它能使模块(控制器你的情况)
- 清晰,便于读取模块的声明
- 模块(一旦所有的依赖加载)的异步调用
实现此语法的一个库是RequireJS,它也嵌入到SAPUI5(和OpenUI5 ofc)中。
在其关于控制库的文档中,SAPUI5团队还推荐使用AMD语法(请参阅here)。 sap.m
和sap.ui
包(我检查过)中的所有控件都使用AMD语法。您也可以阅读this interesting blog post from DJ Adams。
然而,它没有声明(afaik)第二种语法已被废弃。但请记住,它是由Eclipse自动生成的,因为它(UI5插件)很少维护,因此不是最新的(他们更喜欢使用Node.js
+ grunt
+ Sublime/Visual Studio Code/etc
开发)。
在那里,你可以通过做var Controller = sap.ui.core.mvc.Controller
嗨,马克。再次感谢您的建议。视图声明怎么样 -
DJ亚当斯在这里回答了这个问题:http://*.com/questions/24653251/sapui5-difference-between-coreview-and-mvcview伊莫它并没有真正回答这个问题,但它可能是有趣的阅读。也许'sap.ui.core.View'是'sap.ui.core.mvc.View'的快捷方式' – Marc
@Kumar:几天前我偶然发现了这个:https://github.com/SAP/openui5/斑点/主/ SRC/sap.ui.core/SRC/SAP/UI /型芯/ XMLTemplateProcessor.js#L160。看起来像'mvc'是要走的路;) – Marc
对于视图的语法(required
模块后),它会如果你了解它有助于让你的依赖更短的路径。
要声明一个XML 命名空间,则需要使用以下语法:
xmlns:<namespace>="<library the namespace refers to>"
命名空间的目标是提供参考特定库的简便方式,而无需键入了它名称。在这种情况下:
<mvc:View
xmlns="sap.m"
xmlns:mvc="sap.ui.core.mvc" controllerName="">
</mvc:View>
的MVC:查看组件是指查看类sap.ui.core.mvc库。 mvc:查看相当于sap.ui.core.mvc.View。不管你想要什么,你都可以命名你的命名空间
您在XML视图中声明的第一件事是您的视图中的容器。这是将包含视图的所有其他组件的组件 - 视图的根组件。您可以将不同库的组件用作视图的容器。在此示例中,您正在使用sap.ui.core.mvc库中的查看组件。在下面的例子:
<core:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m"
controllerName="" xmlns:html="http://www.w3.org/1999/xhtml">
</core:View>
您在使用sap.ui.core库的查看组件。
以下行:
xmlns="sap.m"
表示默认库。这是由没有命名空间声明的组件引用的库。如果后来在我看来,我宣布了以下组件:
<Input id="myinput"></Input>
的UI5库将从默认库加载输入级,这里sap.m。
从本质上讲,只有一个用于XML语法观点:
<myNamespace:myContainerComponent
xmlns="<my.default.library>"
xmlns:<myFirstNamespace>="my.namespace.library"
<!-- more if needed -->
controllerName="my.controller.name">
<!-- All your other components -->
</myNamespace:myContainerComponent>
我不知道有足够的了解可能的控制器语法要能够解释它们。我会让一些人比我更深入地解释这些知识。
希望这可以帮助你,让事情变得更加清晰。
检查您在eclipse中使用的UI开发版本吗? – Rayon
是的。它是1.32.7 – Kumar
在早期版本中,SAPUI5开发团队在文档中首选第一种语法。从版本1.30开始,更高版本的语法是首选的,它创建了一个类sap.ui.core.mvc.Controller的新子类,其名称为sClassName_ [[Ref ](https://openui5.hana.ondemand.com/docs/api/symbols/sap.ui.core.mvc.Controller.html#.extend)]。在将来的版本中,他们可能会放弃对早期语法的支持。 – Rayon