2017-06-20 45 views
0

我想創造SAPUI5一​​個新庫,並使用申報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(); 
     } 
    }); 

我怎麼能解決這個問題?

回答

1

這取決於你寫了哪些代碼。更具體地說,是否在Controller的調用之前執行或者它確實位於正確的路徑中。

假設你命名空間是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'} 
    }; 
}); 

只是想指出的是,你是不是定義庫,而只是一個工具模塊。您可以查看documentation關於創建新的UI5庫(通常用於對自定義控件,元素等進行分組)。