繁体   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