- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在编写一个应用程序,使用 coffeescript 和咖啡 toastr (一个很棒的 NPM 拼接模块)来构建我的 app.js 文件。
我的许多应用程序类和模板都需要有关当前用户的信息,因此我将类 User(扩展 Backbone.Model)的实例存储为我的主应用程序类(扩展 Backbone.Router)的属性。
作为初始化例程的一部分,我从服务器获取用户(负责身份验证、 Angular 色、帐户切换等)。这是 CoffeeScript :
@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: "ben@accomplicecreative.com"
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
但是,第二个返回 undefined,尽管模型属性在记录时清楚地存在于控制台中。
为了让事情变得更有趣,在控制台中手动输入“window.app.user.get('email')”会返回“ben@accomplicecreative.com”的预期值...?
仅供引用,下面是初始化方法如何编译到我的 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 中初始化应用程序 Controller ,如下所示:
jQuery(document).ready(function(){
window.app = new controllers.Application();
});
请多多指教,谢谢!
最佳答案
这里有两点你需要明白:
fetch
是异步的。console.log
s 是异步的。这就是正在发生的事情:
@user.fetch()
并启动 AJAX 调用。console.log(@user)
这又做了一些异步工作,但是(这是一个很大的但是!),它引用了 @user
与它一起,引用将在 console.log
时被取消引用。调用进行记录。console.log(@user.get('email'))
, 这需要什么 @user.get('email')
返回,get
调用将立即执行。@user
返回一些内容.console.log
调用绕过控制台记录内容。console.log
来自 (2) 带有对 @user
的引用那fetch
填充在 (4) 中;到 (4) 执行时,@user
已填充,因此您会在控制台中看到一个完整的用户。当您调用 @user.get('email')
在(3) 中,fetch
尚未填充 @user
还是这样@user.get('email')
是undefined
而你实际上是在说
console.log(undefined)
console.log
的参数当您调用该函数时而不是当它完成执行并将内容放入控制台时,调用将被评估(但传递给 console.log
的最终结果不会取消引用!)。
所以你有各种异步的东西混合在一起,这就是困惑所在。
如果您将代码更改为:
@user = new models.User
@user.fetch(success: =>
console.log(@user)
console.log(@user.get('email'))
)
您将获得预期的结果。
关于javascript - backbone.js Model.get() 返回未定义,范围使用 coffeescript + 咖啡 toastr ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10944049/
这个 CoffeeScript : if typeof(groups) is undefined or groups.length == 0 被编译成下面的 javascript: if (type
我已经从源代码构建了 opencv 3.0,并且可以运行一些示例应用程序,可以根据 header 进行构建,所以我认为它已成功安装。 我也在使用 python3,我现在去安装和构建 caffe。由于有
我正在将 CoffeeScript 转换为 typescript ,但在使用一个简单的延迟类型函数时遇到了麻烦。 CoffeeScript : ise.utils.delay = (-> time
在二进制图像上分离(计数)咖啡 bean 的正确算法是什么? bean 可以接触并部分重叠。 (来源:beucher at cmm.ensmp.fr) 我实际上不是在用咖啡 bean 工作,但用咖啡
我想微调bvlc_reference_caffenet我的数据集上的模型。 我执行了以下步骤: 我为我拥有的新数据集创建了 lmdb 文件。 我下载了预训练的 bvlc_reference_caffe
在 Caffe 上,我正在尝试实现用于语义分割的全卷积网络。我想知道是否有特定的策略来为以下超参数设置 'solver.prototxt' 值: 测试_iter 测试间隔 iter_size 最大迭代
如果我想在 app/assets/javascript 下的不同文件之间共享一些 JavaScript 函数,组织目录结构的最佳方式是什么? 假设我有shared.js.coffee sharedFu
我正在使用 在 rails 后端使用backbone.js HAML Coffee , 由 haml_coffee_assets 编译.我的模板中有一些重复。 有没有办法创建类似 rails 的部分来
我想微调我的数据集上的 bvlc_reference_caffenet 模型。我成功地对模型进行了微调。但现在我尝试添加 2 个卷积层来检查它的执行情况。我尝试在 "conv5" 层之后添加名称为 "
我有多个具有相同输出形状的卷积层。 如何在 caffe 中计算这些层输出的按元素加权和? 最佳答案 对于按元素运算,请使用 "Eltwise"层。要实现“加权和”,您可以使用 coeff 参数: la
我有一个如下所示的任务: gulp.task 'scripts', () -> gulp.src(path.scripts) .pipe(coffee({bare: true}).on 'er
在 Windows 10 下构建 Caffe(最新版本,仅 CPU 构建)以用于 VS C++ 项目。这样一来一切都开始工作了就麻烦了。但是在创建 Solver 类的实例时,会发生错误。 Solver
我正在使用 Assets 管道来管理我的 Grails 3.0 应用程序的前端资源。但是,似乎没有创建 CoffeeScript 文件的源映射。有什么办法可以启用它吗? 我的 build.gradle
我一直在 mac-emacs 上闲逛,并且我已经 M-x install-package-d Coffee-mode。我决定尝试一下 coffee-compile-file 命令,但当我运行它时,它失
在我的 AngularJS node.js 中 app基于 angular-express-blog和 express-coffee我在 Controller pic 之前的防御 angular.mo
我正在使用GruntJS与 grunt-contrib-coffee 。效果很好!在Watch的帮助下插件就更好了。但我的疑问是: 我有两个文件夹,其中一个包含我的 CoffeeScript 文件,另
我有这个错误,我试图在 Internet 上查看一下,但我什么都不清楚。 我用 Caffe 成功地训练了我的网络,准确率约为 82%。 现在我尝试通过这段代码用图像来尝试: python python
我正在编写一个应用程序,使用 coffeescript 和咖啡 toastr (一个很棒的 NPM 拼接模块)来构建我的 app.js 文件。 我的许多应用程序类和模板都需要有关当前用户的信息,因此我
我正在尝试在 Caffe 上训练网络。我的图像大小为 512x640。批量大小为 1。我正在尝试实现 FCN-8s . 我目前在具有 4GB GPU 内存的 Amazon EC2 实例 (g2.2xl
我将火车和标签数据作为 data.mat。 (我有 200 个训练数据,其中包含 6000 个特征,标签为 (-1, +1),已保存在 data.mat 中)。 我正在尝试将我的数据转换为 hdf5
我是一名优秀的程序员,十分优秀!