【问题标题】:Where is the Backbone error coming from?Backbone 错误来自哪里?
【发布时间】:2017-03-25 15:26:52
【问题描述】:

所以,我正在使用 Backbone 创建一个基本视图,当我运行它时,我得到了这个 TypeError:

Uncaught TypeError: Right-hand side of instanceof is not an object

错误是在我的程序中引用backbone.min.js 文件和第18 行内的多个点。代码如下:

<!DOCTYPE HTML>

<HTML>
   <HEAD>
     <META CHARSET="UTF-8" />
     <TITLE>First View</TITLE>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore-min.js"></script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.0.0/backbone-min.js"></script>
     <SCRIPT LANGUAGE="Javascript">
         var PokeView = Backbone.View.extend({
             render: function() {
                 this.$el.html("Simisage");

                 return this;
             }
         });

         var myPokeView = new PokeView({ el: "#paragraph" });

         console.log(myPokeView instanceof Object);
         myPokeView.render();
     </SCRIPT>
 </HEAD>
 <BODY>
     <p id="paragraph"></p>
 </BODY>

我一直在寻找整个互联网,有些人遇到了同样的错误,但它与 Backbone 无关。 Backbone 的解决方案与其他解决方案相同吗?我该如何解决这个问题?

【问题讨论】:

  • 有人做了类似Object = null的事情。
  • 哦,真的吗?是在backbone.min.js 文件中吗?
  • 不知道,但是查看上面的代码是唯一可能导致该错误的原因。
  • 可能是。有解决办法吗?

标签: javascript backbone.js


【解决方案1】:
  1. 使用latest version of Backbone,目前为 1.3.3。
  2. 在开发时使用任何库的非缩小版本甚至还有一个很大的开发版本按钮来下载主干源文件.
  3. 仔细阅读依赖列表,version 1.0.0 of Backbone 是:

    Backbone 唯一的硬依赖是 Underscore.js ( >= 1.4.3)。对于 RESTful 持久性,通过 Backbone.Router 支持历史记录和使用 Backbone.View 进行 DOM 操作,包括 json2.js,以及 jQuery ( >= 1.7.0) 或 Zepto

    对于version 1.3.3

    Backbone 唯一的硬依赖是 Underscore.js ( >= 1.8.3)。对于使用 Backbone.View 的 RESTful 持久性和 DOM 操作,包括 jQuery ( >= 1.11.0) 和 json2.js 以获得旧版 Internet Explorer 支持。 (Underscore 和 jQuery API 的模仿,例如 LodashZepto,也将倾向于工作,具有不同程度的兼容性。)

因此,在您共享的代码中,似乎缺少 jQuery。只需将它包含在其他库之前,您就可以使用 Backbone。

另外,请注意,在执行该脚本 sn-p 时,您正在使用带有 #paragraph 元素的视图的 el option,该元素在文档中尚不存在。要解决此问题,请将脚本标记放在正文的底部。

<html>
<head>
    <meta charset="UTF-8" />
    <title>First View</title>
</head>
<body>
    <p id="paragraph"></p>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.3.3/underscore.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone.js"></script>
    <script>
        var PokeView = Backbone.View.extend({
            render: function() {
                this.$el.html("Simisage");
                return this;
            }
        });

        var myPokeView = new PokeView({ el: "#paragraph" });

        console.log(myPokeView instanceof Object);
        myPokeView.render();
    </script>
</body>
</html>

【讨论】:

  • 我不需要使用最新版本。但它终于奏效了;谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-14
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多