Backbone.js 下划线.js“;“一些”;不返回布尔值
我使用下划线.js检查列表中的元素是否为true。下面是它的coffeescript代码:Backbone.js 下划线.js“;“一些”;不返回布尔值,backbone.js,coffeescript,underscore.js,backbone-layout-manager,Backbone.js,Coffeescript,Underscore.js,Backbone Layout Manager,我使用下划线.js检查列表中的元素是否为true。下面是它的coffeescript代码: uploading = _(@getViews ".file-forms").some (view) -> view.uploading is true 打印“上载”,而不是返回true或false,可提供: uploading y _chain: true _wrapped: false __proto__: Object 以下是下划线“some”的定义: 此外
uploading = _(@getViews ".file-forms").some (view) ->
view.uploading is true
打印“上载”,而不是返回true或false,可提供:
uploading
y
_chain: true
_wrapped: false
__proto__: Object
以下是下划线“some”的定义:
此外,GetView是主干布局管理器中的一个函数,定义如下:
以下是其他变量的输出,这些变量可能使调试更容易:
_(this.getViews(".file-forms"))
y
_chain: true
_wrapped: Array[1]
0: d
length: 1
__proto__: Array[0]
__proto__: Object
_
function (a){if(a instanceof y)return a;if(this instanceof y)this._wrapped=a;else return new y(a)}
如果你看一下,你会看到发生了什么:
getViews: function(fn) {
//...
if (typeof fn === "string") {
return _.chain([this.views[fn]]).flatten();
}
//...
}
如果您查看所有可能的返回值,您将看到它们都是调用的结果,而没有调用剥离链接包装器。这意味着getViews
返回的是可链接的下划线包装,而不是您期望的简单数组
您不应该执行(@getViews'…')
,因为getViews
返回值已用下划线包装。您应该能够执行以下操作:
uploading = @getViews(".file-forms").some((view) -> view.uploading is true).value()
顺便说一句,我对你的
v有点怀疑;对true
和false
进行显式检查可能会导致奇怪的行为(尤其是在咖啡脚本中,是
实际上是
)。我可能会使用(v)->v.upload
作为函数。当然,这是个人偏好。getViews
似乎返回了一个预包装、链接的下划线对象供您使用。在这种情况下,再次对其调用\uu
不会产生任何效果。您可以放置upload.value()
以获得所需的结果。您可以显示您的输出javascript吗?看起来它调用了chain()
而没有value()
我用console.log打印它(上传)(输出如上所示)。“输出javascript”是指通过编译咖啡脚本生成的javascript吗?您只需在此处复制粘贴coffeescript即可看到:在javascript/下划线中的“Try coffeescript”下,它可以正常工作。你要么有咖啡脚本问题,要么有脊椎问题。你能在你的环境中显示getViews
和literal
的结果吗