SAPUI5创建库

时间:2017-06-20 21:37:57

标签: sapui5

我想在SAPUI5中创建一个新库并使用declare

jQuery.sap.declare("app.util.Test", true);

var Test = {
    myFn: function(){return 'foo'}
}

但是当我想使用它时,却找不到它

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "app/util/Test"
], function(Controller, Test) {
"use strict";

    return Controller.extend("app.controller.MyTest", {
        onInit: function() {
            // Test undefined
            var baa = Test.myFn();
        }
    });

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

这取决于您编写该代码的位置。更具体地说,是否在控制器的sap.ui.define调用之前执行,或者它确实位于正确的路径中。

假设您的 root 名称空间为app,您的文件夹结构应如下所示:

rootFolder
|-controller
|---MyTest.controller.js
|-util
|---Test.js

此外,您没有对Test对象执行任何操作。 jQuery.sap.define只是创建一个全局对象并将其注册到UI5注册表。它不会将您的Test对象与此全局对象相关联。所以你应该这样做:

jQuery.sap.declare("app.util.Test", true);

app.util.Test = {
    myFn: function(){return 'foo'}
}

通常情况下,您不应使用jQuery.sap.declare,而只需将sap.ui.define用于实用程序模块(以避免使用全局变量)。如果您的文件夹结构正确,则不必指定模块名称(因为框架会从文件的位置推断出它)。

sap.ui.define([], function () {
    return {
        myFn: function(){return 'foo'}
    };
});

只是想指出你定义一个库,而只是一个实用程序模块。您可以查看有关创建新UI5库的documentation(通常用于对自定义控件,元素等进行分组)。