簡體   English   中英

從另一個文件調用Javascript對象時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM