3

看起来其他人在尝试创建主干视图时遇到了类似的问题。但我认为我的问题是不同的。这是我在页面中包含主干的方式。

<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 is undefined”,它指向我在某个地方的主干-min.js 文件深处。

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

我不想访问 this.Model。我从来没有在我的代码中达到可以访问 this 的点。Model 类在 Backbone 对象中未定义。除了主干-min.js 文件之外,我还需要包含其他内容吗?

4

1 回答 1

7

问题是 underscore.js 不包括在内。正如 Loamhoof 所指出的,backbone.js 需要它。

我做了一些进一步的研究。根据这个页面,主干只依赖 json2.js 来提供 JSON.parse 和 JSON.stringify 函数,这些函数现在在大多数浏览器中都是纯 JavaScript 的一部分。所以根据该页面上的评论,json2.js 应该只需要支持不提供 JSON 功能的旧浏览器。

于 2013-06-17T10:09:37.943 回答