Backbone.Model未定义

时间:2013-06-16 21:56:01

标签: backbone.js model undefined

在尝试创建Backbone View时,看起来其他人遇到了类似的问题。但我认为我的问题不同了。以下是我在页面中包含骨干的方法。

<script type="text/javascript" src="/js/jquery.min.js"></script>
<script type="text/javascript">
    //<!--
    jQuery.noConflict ();
    //-->
</script>
<!--[if lt IE 9]><script type="text/javascript" src="/js/html5.js"></script><![endif]-->
<script type="text/javascript" src="/js/backbone-min.js"></script>
<script type="text/javascript" src="/js/showbase.js"></script>

我添加了对jQuery.noConflict()的调用,因为我认为这可能是问题所在。事实并非如此。

到目前为止,这是我在showbase.js文件中的内容。这个简单的测试失败了。

jQuery (document).ready (
            function ()
            {
                var props = '';
                for (var p in Backbone)
                    props += p + ': ' + typeof Backbone [p] + "\n";
                alert (props);

                props = '';
                for (var p in Backbone.Model)
                    props += p + ': ' + typeof Backbone.Model [p] + "\n";
                alert (props);

                alert (typeof Backbone.Model);
            }
);

在第一个警报中,我得到:

VERSION: string
$: function
noConflict: function
emulateHTTP: boolean
emulateJSON: boolean
Events: object

在第二次警报中,我什么都没得到。

在第三个警告中,我得到“未定义”。

我从Firebug得到的错误消息说“TypeError:h未定义”,它指向我在某个地方的backbone-min.js文件深处。

我正在关注http://backbonejs.org/docs/todos.html的Todos示例。在该示例中,他们做的第一件事是在jQuery文档就绪函数中扩展Backbone.Model类。这就是我所做的一切。但Backbone.Model类在那时甚至不存在。

我不是想要访问这个。模型。我从来没有在我的代码中找到一个我可以访问它的点。 Model类在Backbone对象中是未定义的。我是否需要包含backbone-min.js文件以外的其他内容?

1 个答案:

答案 0 :(得分:7)

问题是没有包括underscore.js。正如Loamhoof指出的那样,这是backbone.js所要求的。

我做了一些进一步的研究。根据{{​​3}},backbone只依赖于json2.js来提供JSON.parse和JSON.stringify函数,这些函数现在是大多数浏览器中普通javascript的一部分。因此,根据该页面上的评论,仅需要json2.js来支持不提供JSON功能的旧浏览器。