如何调用使用sap.ui.require句的对象

How to call objects that uses sap.ui.require sentence

我一直在检查最新的 openui5 文档,我看到有一个 "new way" 创建 类。

所以现在,使用 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
            },
        });

})();

我想你要找的是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)