Sapui5 开发者指南和Eclipse模板之间的不一致
当我查看SAPUI5网站上的时,他们是如何声明XML视图的:Sapui5 开发者指南和Eclipse模板之间的不一致,sapui5,Sapui5,当我查看SAPUI5网站上的时,他们是如何声明XML视图的: <myNamespace:myContainerComponent xmlns="<my.default.library>" xmlns:<myFirstNamespace>="my.namespace.library" <!-- more if needed --> controllerName="my.controller.name"> &l
<myNamespace:myContainerComponent
xmlns="<my.default.library>"
xmlns:<myFirstNamespace>="my.namespace.library"
<!-- more if needed -->
controllerName="my.controller.name">
<!-- All your other components -->
</myNamespace:myContainerComponent>
控制器的定义如下:
sap.ui.define([
“sap/ui/core/mvc/Controller”
],功能(控制器){
“严格使用”;
返回控制器。扩展(“”{
});
});
但是,当我在Eclipse中创建SAPUI5项目并使用选项New>SAPUI5 Application Development>View时,它会创建一个视图和一个控制器,如下所示:
sap.ui.controller(“{
});
一方面,以上述方式创建视图可以避免每次键入基本语法。然而另一方面,《开发人员指南》(尤其是控制器)中的语法看起来更有条理
我应该使用一种或另一种语法有什么特别的原因吗?或者我可以在编程中使用任何一种方法而不存在任何差异吗
我使用v1.32进行开发。第一种语法(sap.ui.define
)是首选语法。它也称为AMD(异步模块声明)语法(请参阅)。它将模块(您的案例中的控制器)包装在函数调用中,以启用
- 清晰易读的模块声明
- 异步调用模块(加载所有依赖项后)
sap.m
和sap.ui
包中的所有控件(我已经检查过)都使用AMD语法
你也可以阅读
然而,第二种语法被弃用的说法(afaik)还没有明确说明。但请记住,它是由Eclipse自动生成的,因为它(UI5插件)很少维护,因此不是最新的(他们更喜欢使用
Node.js
+grunt
+Sublime/visualstudio code/etc
)
在那里,您可以通过执行var Controller=sap.ui.core.mvc.Controller
(在您required
模块之后)第一个语法(sap.ui.define
)是首选语法。它也称为AMD(异步模块声明)语法(请参阅)。它将模块(您的案例中的控制器)包装在函数调用中,以启用
- 清晰易读的模块声明
- 异步调用模块(加载所有依赖项后)
sap.m
和sap.ui
包中的所有控件(我已经检查过)都使用AMD语法
你也可以阅读
然而,第二种语法被弃用的说法(afaik)还没有明确说明。但请记住,它是由Eclipse自动生成的,因为它(UI5插件)很少维护,因此不是最新的(他们更喜欢使用
Node.js
+grunt
+Sublime/visualstudio code/etc
)
在那里,您可以通过执行
var Controller=sap.ui.core.mvc.Controller
(在您required
模块之后)对于视图的语法,如果您理解它,它将有所帮助
要声明XML命名空间,需要使用以下语法:
xmlns:<namespace>="<library the namespace refers to>"
指示默认库。这是在没有命名空间的情况下声明的组件引用的库。如果稍后在我看来,我声明以下组件:
<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>
controllerName=“my.controller.name”
我对可能的控制器语法了解不够,无法解释它们。我会让比我更有知识的人进一步解释这些
希望这对您有所帮助并使事情更清楚。对于视图的语法,如果您理解它,它将有所帮助 要声明XML命名空间,需要使用以下语法:
xmlns:<namespace>="<library the namespace refers to>"
指示默认库。这是在没有命名空间的情况下声明的组件引用的库。如果稍后在我看来,我声明以下组件:
<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>
controllerName=“my.controller.name”
我对可能的控制器语法了解不够,无法解释它们。我会让比我更有知识的人进一步解释这些
希望这对您有所帮助并使事情更清楚。检查您在eclipse中使用的UI开发版本?在早期版本中,SAPUI5开发团队在文档中首选第一种语法。从版本1.30开始,首选更晚的语法,它创建了一个名为sClassName的类sap.UI.core.mvc.Controller的新子类。在未来的版本中,他们可能会放弃对早期语法的支持。谢谢Rayon。sap.ui.define语法允许我通过在回调中传递一个正式参数来使用sap.ui.core.mvc.Controller的实例。所以我可以在任何地方使用“控制器”,而不是完整的模块路径。对于我需要的其他模块,如sap.ui.model.json.JSONModel等,我如何用第二种方法做到这一点?这就是使用第一种方法的好处。我们可以在这种方法中使用别名。不确定在第二种方法中是否有任何方法做到这一点…检查您在eclipse中使用的ui开发版本?在早期版本中,第一种语法是SAPUI5开发公司首选