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

时间:2015-02-05 20:52:43

标签: sapui5

我一直在检查最后一个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
            },
        });

})();

1 个答案:

答案 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