[英]Error calling Javascript object from another file
我創建了一個新的client.messages2.js文件,其中僅包含我要使用的功能,並根據Jonathan的建議重寫了這些功能:
var clientMessages = function(){
var self = this;
self.message = function (type) {
var that = {};
that.type = type;
return that;
};
self.request = function (type) {
var that = message(type);
return that;
};
self.request = function (type) {
var that = message(type);
return that;
};
self.requestConfiguration = function (type, params) {
var that = request(type);
[...some code here...]
return that;
};
self.requestGetConfiguration = function (params) {
var that = requestConfiguration("RequestGetConfiguration", params);
return that;
};
self.requestSetConfiguration = function (params) {
var that = requestConfiguration("RequestSetConfiguration", params);
return that;
};
}
var clientMessages = new clientMessages();
以下文件已加載到html文件中:
<script src="{{ url_for('static', filename='lib/jquery-1.11.3.min.js') }}"></script>
<script src="{{ url_for('static', filename='lib/require.js') }}"></script>
<script src="{{ url_for('static', filename='scripts/clientlibs/client.messages2.js') }}"></script>
main.js中的代碼是:
var clientMessages = require(["/static/scripts/clientlibs/client.message2.js"]);
var request = clientMessages.requestGetConfiguration({});
我也嘗試了不帶括號的requestGetConfiguration:
var clientMessages = require(["/static/scripts/clientlibs/client.message2.js"]);
var request = clientMessages.requestGetConfiguration;
在第一種情況下,我得到此錯誤:
未捕獲的TypeError:clientMessages.requestGetConfiguration不是一個函數
在這兩種情況下,我都會得到以下結果:
無法加載資源:服務器的狀態為404(未找到)require.js:8未捕獲的錯誤:“ / static / scripts / clientlibs / client.message2.js”的腳本錯誤http://requirejs.org/文檔/ errors.html#scripterror
請注意,當我進入Chrome中的Inspect時,可以查看和編輯client.message2.js。 它位於localhost:5000 / static / scripts / clientlibs / client.message2.js
它看起來像一個范圍問題。
由於前綴var
您的函數requestSetConfiguration是私有的。
要啟用公共功能,請嘗試使用以下方法:
var self = this;
self.clientMessages { ...
一個如何做的例子:
clientMessages.js :(看,我更改了文件名)
var ClientMessages = function(){
var self = this;
self.requestSetConfiguration = function(params){...};
}
var clientMessages = new ClienteMessages();
main.js :(首先,您必須將html文件中的clientMessages.js和main.js導入,或者在某些AMD實現中要求main.js中的clientMessages.js)
...
clientMessages.requestSetConfiguration(params);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.