Parse.View.extend - "无法读取属性'扩展'未定义"

时间:2015-10-27 14:53:00

标签: javascript backbone.js parse-platform sdk underscore.js

目前使用Parse JavaScript SDK作为Web应用程序,但我也是Backbone的新手,由于这个特殊问题是Parse从Backbone复制的功能,我不确定我在哪里#39;我弄错了。

我有index.html,这个基本结构&脚本模板标记(由_underscore使用):

<div id="my-app">        

</div>
<script type="text/template" id="album-header-template">
    <div id="some-id">
          Some Content
    </div>
</script>

<body>的末尾,以下脚本标记,用于处理Parse依赖关系,加载Parse,&amp;使用我自己的JS文件:

<script src="libraries/node_modules/jquery/dist/jquery.min.js"></script>
<script src="libraries/node_modules/underscore/underscore-min.js"></script>
<script src="libraries/node_modules/parse/dist/parse-latest.min.js"></script>
<script src="app/ParseApp.js"></script>

然后在ParseApp.js,我试图通过创建简单的对象和视图来实现,我有以下内容:

$(function () {
    var Album = Parse.Object.extend("Album",{
            // Default attributes for the album
            defaults: {
              name: "Album Title"
            },

            // Ensure that each album created has a title
            initialize: function() {
              if (!this.get("name")) {
                this.set({"name": this.defaults.content});
              }
            },
        });

    var HomeView = Parse.View.extend({
        el: $("#my-app"),

        initialize: function() {
            console.log("new instance of HomeView");
            this.render();
        },

        render: function() {
            this.$el.html(_.template($("#album-header-template").html()));
        }
    });

    new HomeView;
});

当我在浏览器中运行index.html时,我在控制台中收到以下错误:Uncaught TypeError: Cannot read property 'extend' of undefined(发生在var Home View = Parse.View.extend行)。

最初,我原本以为这可能是因为Parse没有及时启动ParseApp.js根据我的脚本加载来使用它。但是,我从Parse运行了推荐的"Test the SDK" script,并且它确实已初始化(此外,添加var Album的对象可以正常工作)。所以我真的坚持导致HomeViewParse.View导致&#34;未定义&#34;。

可能是我忽略的直截了当的答案,但是我会非常感谢任何帮助,如果需要,我可以提供完整的文件。

2 个答案:

答案 0 :(得分:3)

不是一个非常令人满意的答案,但感谢@Yura&amp; @Daniel Blank发现错误是由于最新版本的Parse SDK(1.6.0之后的所有内容)不再包含完整的Backbone功能。这包括我在本地使用的版本。

Parse SDK方向的最佳解释在上面给出的链接中,对于那些希望继续使用Parse和/或Backbone的人来说,似乎有三个选项:

  1. 使用旧版本(1.5.0是包含Backbone功能的最新版本)以维护您的Backbone功能,例如Parse.CollectionParse.Router
  2. 尝试使用Parse SDK-agnostic,同时继续使用Backbone。可以使用基本的Parse REST API,或尝试the GitHub projects之一尝试为您进行链接。
  3. 放弃Backbone,继续使用Parse和VanillaJS,或者switch over to React(这显然是Facebook希望Parse领导的方向)
  4. 我太缺乏推荐三者中的一个了,虽然#1看起来最简单,而#3似乎远远可以维持。仍在努力做出我自己的决定,但这超出了我原来问题的范围。感谢大家的帮助。

答案 1 :(得分:0)

有两件事突然袭来我:

  1. 我没看到你在哪里初始化Parse ......通常是这样 产生不同的错误,但仍然可能是一个问题
  2. 您正在引用自己的本地库以进行Parse ...可能会尝试定位正式部署的版本。
  3. script src =“http://www.parsecdn.com/js/parse-1.2.13.min.js”