首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAPUI5创建库

SAPUI5创建库
EN

Stack Overflow用户
提问于 2017-06-20 21:37:56
回答 1查看 817关注 0票数 0

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

代码语言:javascript
复制
jQuery.sap.declare("app.util.Test", true);

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

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

代码语言:javascript
复制
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();
        }
    });

我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-21 05:00:01

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

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

代码语言:javascript
复制
rootFolder
|-controller
|---MyTest.controller.js
|-util
|---Test.js

另外,您也没有对Test对象做任何事情。jQuery.sap.define只是创建一个全局对象,并在UI5注册表中注册它。它不将您的Test对象与这个全局对象关联起来。所以你应该做:

代码语言:javascript
复制
jQuery.sap.declare("app.util.Test", true);

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

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

代码语言:javascript
复制
sap.ui.define([], function () {
    return {
        myFn: function(){return 'foo'}
    };
});

我只想指出,您不是,不是定义库的,而是简单的实用模块。您可以查看有关创建新的文档库的UI5 (通常用于对自定义控件、元素等进行分组)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44663461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档