我正在使用 Coffeescript 和咖啡烤面包机(一个很棒的用于拼接的 NPM 模块)编写一个应用程序,该应用程序构建了我的 app.js 文件。
我的许多应用程序类和模板都需要有关当前用户的信息,因此我有一个 User 类(扩展 Backbone.Model)的实例存储为我的主应用程序类(扩展 Backbone.Router)的属性。
作为初始化例程的一部分,我从服务器获取用户(负责身份验证、角色、帐户切换等)。这是咖啡脚本:
@user = new models.User
@user.fetch()
console.log(@user)
console.log(@user.get('email'))
第一个日志记录语句在控制台中输出正确的 Backbone.Model 属性对象,就像它应该的那样:
User
_changing: false
_escapedAttributes: Object
_pending: Object
_previousAttributes: Object
_silent: Object
attributes: Object
account: Object
created_on: "1983-12-13 00:00:00"
email: "[email protected] /cdn-cgi/l/email-protection"
icon: "0"
id: "1"
last_login: "2012-06-07 02:31:38"
name: "Ben Ipsen"
roles: Object
__proto__: Object
changed: Object
cid: "c0"
id: "1"
__proto__: ctor
app.js:228
然而,第二次返回不明确的尽管模型属性在记录时清楚地存在于控制台中。
为了让事情变得更有趣,在控制台中手动输入“window.app.user.get('email')”会返回“的预期值”[电子邮件受保护] /cdn-cgi/l/email-protection"... ?
仅供参考,以下是初始化方法如何编译到我的 app.js 文件中的信息:
Application.prototype.initialize = function() {
var isMobile;
isMobile = navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/);
this.helpers = new views.DOMHelpers().initialize().setup_viewport(isMobile);
this.user = new models.User();
this.user.fetch();
console.log(this.user);
console.log(this.user.get('email'));
return this;
};
我在静态 HTML 中初始化应用程序控制器,如下所示:
jQuery(document).ready(function(){
window.app = new controllers.Application();
});
请提出建议并谢谢!