【发布时间】:2015-10-27 14:53:00
【问题描述】:
目前正在为 Web 应用程序使用 Parse JavaScript SDK,但我也是 Backbone 的新手,而且由于这个特殊问题是 Parse 从 Backbone 复制过来的功能,我不确定我在哪里制作我的错误。
我有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 被“未定义”。
我可能忽略了一个简单的答案,但任何帮助将不胜感激,如果需要,我可以提供完整的文件。
【问题讨论】:
-
Cannot read property 'extend' of undefined- 本质上是说Parse.View不是一个东西。您可以将其发送到控制台以检查是否存在。 -
谢谢,这是一个很好的总结。我刚刚在控制台中运行了
Parse.View,得到了undefined。现在我需要弄清楚为什么只有一些 Parse 方法在工作,虽然 -Parse.Collection和Parse.Router(两者都在我引用的 example Todo app 中工作),但Parse.Object和Parse.User都返回它们正确的函数.很想听听关于 Parse SDK 仅提供部分功能的原因的想法。 -
编辑:
Parse.Collection、Parse.Router和Parse.View现在都不工作,并返回undefined -
然后,查看浏览器控制台中的网络面板,检查库是否已加载。
-
@JackKoppa 你确定问题的原因了吗?我现在有一个非常相似的问题。谢谢!
标签: javascript backbone.js parse-platform sdk underscore.js