Parse.View.extend - "cannot read property 'extend' of undefined"
Parse.View.extend - "cannot read property 'extend' of undefined"
目前正在将 Parse JavaScript SDK 用于 Web 应用程序,但我也是 Backbone 的新手,并且由于这个特殊问题出在 Parse 从 [=41= 复制过来的功能中], 我不确定我到底在哪里犯了错误。
我有 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,并使用我自己的 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
的对象工作正常)。所以我真的很困惑是什么导致 HomeView
或 Parse.View
成为 "undefined"。
可能是我忽略的一个简单的答案,但我们将不胜感激,如果需要,我可以提供完整的文件。
2 件事让我突然想到:
- 我没看到你在哪里初始化 Parse...通常是
产生不同的错误,但仍然可能是一个问题
- 您正在为 Parse 引用您自己的本地库...也许尝试以正式部署的版本为目标。
脚本源="http://www.parsecdn.com/js/parse-1.2.13.min.js"
不是一个非常令人满意的答案,但感谢@Yura 和@Daniel Blank 的帮助,发现错误是由于最新版本的 Parse SDK(1.6.0 之后的所有版本)不再包含完整的Backbone 功能。这包括我在本地使用的 npm 版本。
Parse SDK 方向的最佳解释在上面给出的 link 中,似乎有三个选项,对于那些希望继续使用 Parse and/or Backbone 的人:
- 使用旧版本(1.5.0 是包含 Backbone 功能的最新版本)以维护您的 Backbone 功能,例如
Parse.Collection
或 Parse.Router
.
- 尝试与 Parse SDK 无关,同时继续使用 Backbone。可以使用基本的 Parse REST API,或尝试 the GitHub projects 中的一种尝试为您 linking。
- 放弃 Backbone 前进,将 Parse 与 VanillaJS 一起使用,或者 switch over to React(这显然是 Facebook 希望 Parse 前进的方向)
我太缺乏经验,无法推荐这三个中的一个,尽管 #1 似乎是最简单的,而 #3 似乎是最易于维护的。仍在尝试做出自己的决定,但这超出了我最初提出问题的范围。谢谢大家的帮助。
目前正在将 Parse JavaScript SDK 用于 Web 应用程序,但我也是 Backbone 的新手,并且由于这个特殊问题出在 Parse 从 [=41= 复制过来的功能中], 我不确定我到底在哪里犯了错误。
我有 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,并使用我自己的 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
的对象工作正常)。所以我真的很困惑是什么导致 HomeView
或 Parse.View
成为 "undefined"。
可能是我忽略的一个简单的答案,但我们将不胜感激,如果需要,我可以提供完整的文件。
2 件事让我突然想到:
- 我没看到你在哪里初始化 Parse...通常是 产生不同的错误,但仍然可能是一个问题
- 您正在为 Parse 引用您自己的本地库...也许尝试以正式部署的版本为目标。
脚本源="http://www.parsecdn.com/js/parse-1.2.13.min.js"
不是一个非常令人满意的答案,但感谢@Yura 和@Daniel Blank 的帮助,发现错误是由于最新版本的 Parse SDK(1.6.0 之后的所有版本)不再包含完整的Backbone 功能。这包括我在本地使用的 npm 版本。
Parse SDK 方向的最佳解释在上面给出的 link 中,似乎有三个选项,对于那些希望继续使用 Parse and/or Backbone 的人:
- 使用旧版本(1.5.0 是包含 Backbone 功能的最新版本)以维护您的 Backbone 功能,例如
Parse.Collection
或Parse.Router
. - 尝试与 Parse SDK 无关,同时继续使用 Backbone。可以使用基本的 Parse REST API,或尝试 the GitHub projects 中的一种尝试为您 linking。
- 放弃 Backbone 前进,将 Parse 与 VanillaJS 一起使用,或者 switch over to React(这显然是 Facebook 希望 Parse 前进的方向)
我太缺乏经验,无法推荐这三个中的一个,尽管 #1 似乎是最简单的,而 #3 似乎是最易于维护的。仍在尝试做出自己的决定,但这超出了我最初提出问题的范围。谢谢大家的帮助。