我想在SAPUI5中创建一个新的库并使用
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();
}
});我怎么才能解决这个问题?
发布于 2017-06-21 05:00:01
这取决于您在哪里编写的代码。更具体地说,是否在Controller的sap.ui.define调用之前执行,或者是否确实位于正确的路径中。
假设您的根名称空间是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 (通常用于对自定义控件、元素等进行分组)。
https://stackoverflow.com/questions/44663461
复制相似问题