我只是从Flask开始,所以我可能忽略了一些非常明显的东西。我已经加载了我的javascript文件:
<script src="{{ url_for('static', filename='Page.js') }}"></script>
然后我尝试从js文件实例化一个对象:
<script>
var page = new Page("index");
</script>
在Page.js中,我有这个:
var Page = function(page) {
alert("init");
<some other things>
}
<and then some object methods Page.prototype.init_standard = function() {} etc>
警报没有警报,虽然我期待它。另外,如果我在HTML页面的实例化之前放了一个警告,我就会得到警报,如果我在HTML页面的实例化之后的行上放了一个警报,我就不会得到警报。我不确定这是Flask的问题还是javascript的问题——我都是新手。
编辑:为了将这种可能性扼杀在萌芽状态,javascript文件正在根据开发服务器加载,状态304
Page.js只需要定义一个函数来创建你想要的对象。所以Page()应该只是一个以'return this;'结束的函数。对象创建时并不严格要求返回此值。
function Page(page) {
alert("init");
... Your code and methods...
// Example Method:
this.foo = function(param) {
... function body ...
};
return this;
}
然后你可以创建一个对象:
var page_object = new Page("index");
page_object.foo(some_data);
我在查看浏览器调试器后发现了它。该公司表示,佩奇没有被定义。经过一些尝试和错误,我意识到我不能在javascript文件中使用{{flask模板符号,可能是因为它不是作为模板加载的,所以不会以这种方式对其进行解析。无论如何,我最终只是将{{}}链接移动到html模板并将其作为参数传递给javascript。