如何在单独的js文件中创建Backbone View

时间:2015-05-13 04:10:20

标签: javascript jquery backbone.js

我正在尝试了解如何模块化Backbone ToDo tutorial

最初一切都在同一个文件中,但如果我尝试提取到另一个文件:

var TodoView = Backbone.View.extend({
    ...
});

然后会抛出错误:

var view = new TodoView({model: todo});

**Uncaught TypeError: undefined is not a function**

这可能是由于范围问题,但我不知道如何在$(function()内创建引用,所以我可以在main函数中创建这个新对象。

3 个答案:

答案 0 :(得分:2)

假设您的第一个代码部分是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!

答案 1 :(得分:0)

您可以使用require.js之类的东西加载外部文件并管理依赖项。

答案 2 :(得分:0)

好的,解决方法是将脚本引用移动到正文的末尾,而不是在head标记内。

我认为原因是TodoView.js正在使用正文中定义的templates,并且由于js文件是在正文之前加载的,因此模板尚未可用。