我一直在检查最后一个openui5文档,我看到有一种新的方式"创建类。
所以现在,使用sap.ui.define,我们可以用AMD的方式创建类,如下所示 -
sap.ui.define(['jquery.sap.global', 'sap/ui/base/Object'],
function(jQuery, Object) {
"use strict";
var foo = Object.extend("Foo", {
metadata : {
properties : {}
}
});
foo.prototype.someFunction = function(){};
return foo;
},true);
问题是我不确定如何从控制器中调用这种类。我想在控件中使用AMD语法,但我还没有找到任何示例 -
(function() {
'use strict';
sap.ui.controller('settings.mvc.controller.App', {
onInit: function() {
//Foo is always undefined
},
});
})();
答案 0 :(得分:2)
我认为您要找的是sap.ui.require()
:
https://github.com/SAP/openui5/blob/master/src/sap.ui.core/src/jquery.sap.global.js#L2488
(注意与jQuery.sap.require()
的区别!)
此功能是新功能,目前稳定版本1.26尚未提供,但只要下一个beta预览版本(或者您自己构建UI5),就可以编写如下内容:
sap.ui.require(['Foo'], function(Foo) {
Foo.someFunction();
});
这是sap.ui.define()的对称对应物并且异步工作,所以我想这就是你要找的东西。
(我假设你的问题是关于从另一个文件加载Foo,因为当在一个文件中编写时,它已经被定义: http://jsbin.com/lagiviyoja/1/edit?html,output)