【发布时间】:2014-05-06 21:49:22
【问题描述】:
我有一个名为 App 的对象,它包含我的主干应用程序的所有相关部分。
问题:当我从 App 中的其他对象中调用 App 中的对象时,它们是未定义的。
我认为这种情况正在发生,因为在定义 App 对象之前,它们在 App 中的对象中被称为表单。
如何在其中的对象调用App中的其他对象之前定义app?
我的 App 对象的示例,其中 App.templates.restaurant 对象在 Restaurant 视图中被调用并返回 undefined:
var App = {
...
templates: {
restaurant: "#RestaurantModel__template",
menu: "#MenuItemsModel__template"
},
...
Views: {
Restaurant: Backbone.View.extend({
tagName: "li",
template: Handlebars.compile($(App.templates.restaurant).html()),
...
)},
...
}),
...
}
【问题讨论】:
-
是不是有错别字?您可以在 Views 函数开始的调试控制台中检查 App 对象中的内容吗?从这一小块来看,一切似乎都是正确的。并且在您读取之前创建了对象(我假设您在对象定义后调用 App.Views)
-
@SergeS 我无法在调试控制台中对其进行评估,因为在定义 App 时会发生错误。这是它抛出的错误消息:
Uncaught TypeError: Cannot read property 'templates' of undefined -
我的错误,我读错了你的代码
-
this函数内部的@jOshT 指的是主干视图。我不能使用 self 因为它还没有定义。
标签: javascript jquery backbone.js architecture