如何在单独的js文件中创建Backbone视图
How to create Backbone View in a separate js file
我正在尝试了解如何模块化 Backbone ToDo tutorial
最初一切都在同一个文件中,但如果我尝试提取到另一个文件:
var TodoView = Backbone.View.extend({
...
});
然后这会引发错误:
var view = new TodoView({model: todo});
**Uncaught TypeError: undefined is not a function**
这可能是由于范围问题,但我不知道如何在 $(function()
中创建一个引用,所以我可以在主函数中创建这个新对象。
假设您的第一个代码部分是 TodoView.js,
你的第二个代码部分是 app.js.
像这样写你的 html 文件,
<html>
<head>
<script type="text/javascript" src="js/TodoView.js"></script>
<script type="text/javascript" src="js/app.js"></script>
</head>
<body>
// your dom
</body>
</html>
(编辑,2015-07-27)
抱歉我迟回复了。
这个怎么样?
<html>
<head></head>
<body>
<!-- your dom -->
<script type="text/javascript" src="js/TodoView.js"></script>
<script type="text/javascript" src="js/app.js"></script>
</body>
</html>
在许多情况下,大多数 javascript 代码都附加在 </body>
之前,因此 javascript 可以使用您的 dom!
您可以使用 require.js 之类的东西来加载外部文件和管理依赖项。
好的,解决方案是将脚本引用移到正文的末尾,而不是在 head 标签内。
我认为原因是 TodoView.js
正在使用正文中定义的 templates
,并且由于 js 文件在正文之前加载,因此模板尚未加载可用。
我正在尝试了解如何模块化 Backbone ToDo tutorial
最初一切都在同一个文件中,但如果我尝试提取到另一个文件:
var TodoView = Backbone.View.extend({
...
});
然后这会引发错误:
var view = new TodoView({model: todo});
**Uncaught TypeError: undefined is not a function**
这可能是由于范围问题,但我不知道如何在 $(function()
中创建一个引用,所以我可以在主函数中创建这个新对象。
假设您的第一个代码部分是 TodoView.js, 你的第二个代码部分是 app.js.
像这样写你的 html 文件,
<html>
<head>
<script type="text/javascript" src="js/TodoView.js"></script>
<script type="text/javascript" src="js/app.js"></script>
</head>
<body>
// your dom
</body>
</html>
(编辑,2015-07-27)
抱歉我迟回复了。 这个怎么样?
<html>
<head></head>
<body>
<!-- your dom -->
<script type="text/javascript" src="js/TodoView.js"></script>
<script type="text/javascript" src="js/app.js"></script>
</body>
</html>
在许多情况下,大多数 javascript 代码都附加在 </body>
之前,因此 javascript 可以使用您的 dom!
您可以使用 require.js 之类的东西来加载外部文件和管理依赖项。
好的,解决方案是将脚本引用移到正文的末尾,而不是在 head 标签内。
我认为原因是 TodoView.js
正在使用正文中定义的 templates
,并且由于 js 文件在正文之前加载,因此模板尚未加载可用。