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