将Coffeescript下划线.js和Backbone.js放在一起
TLDR 我不熟悉Backbone.js和下划线。我认为下划线包含在Backbone中。我在rails应用程序中使用了这一点,但这一点并不重要。我正在关注Railscapst《主干》的两集。我正在尝试浏览下划线、主干、咖啡脚本、调试和每个人的文档。下划线API和coffeescript版本之间的差异增加了混淆 例如:我有一个用户对象数组作为“条目”。每个都有一个赢家属性。因此,这将起作用:将Coffeescript下划线.js和Backbone.js放在一起,backbone.js,coffeescript,underscore.js,Backbone.js,Coffeescript,Underscore.js,TLDR 我不熟悉Backbone.js和下划线。我认为下划线包含在Backbone中。我在rails应用程序中使用了这一点,但这一点并不重要。我正在关注Railscapst《主干》的两集。我正在尝试浏览下划线、主干、咖啡脚本、调试和每个人的文档。下划线API和coffeescript版本之间的差异增加了混淆 例如:我有一个用户对象数组作为“条目”。每个都有一个赢家属性。因此,这将起作用: # why does this return everyone? non_winners = @selec
# why does this return everyone?
non_winners = @select(entries) ->
@get('winner') == false
所以这里发生了很多事情。@select来自下划线。@get来自主干网。所有这些都是咖啡脚本。将此转换为JS调试行有点疯狂。尽管我最终找到了主干之外的javascript来测试它。我的问题是文档:
文件说:
filter_.filter(list, iterator, [context]) Alias: select
我不知道怎么读这个。我只是调用了@select,我认为它等同于。select,但我没有给它一个迭代器。在浏览器控制台上的Javascript中,它只返回包含winner为false的对象的数组。在我的应用程序中,如果我使用console.lognon_winners,它将返回除console.lognon_winners.length之外的所有人,长度与我的预期相符,即:如果我有一个获胜者,则为1。在我学习的过程中,这种差异确实令人困惑
entries = [
{ name: 'Joe', winner: false },
{ name: 'Bob', winner: false },
{ name: 'Henry', winner: true }
]
# here's an example from my app
#non_winners = @select (entries) ->
# @get('winner') == false
# here's an example from the API
#evens = _.filter [1..6], (num) -> num % 2 is 0
# here's something that works
non_winners = _.select entries, (entry) ->
entry.winner is true
我发现有几件事令人困惑:
人们实际上是如何调试这种疯狂的组合的。咖啡脚本,下划线,脊梁骨,天哪!在我了解一切之前,我想玩它。下面的JSFIDLE很不错,但是使用浏览器控制台有希望吗?
如何翻译这个@select business@是coffeescript的自别名,它指向主干集合?要下划线的389;。选择api文档?论点的顺序是不同的。
在上面的例子和下面的提琴中,只返回一个人。但在我的应用程序中,所有人都返回。
我可以让一个人在小提琴中返回,但语法与RailsCast323中的示例不同。
在小提琴中工作的代码仍然与下划线API文档不匹配。我想学习如何阅读下划线文档,学习钓鱼与单鱼等等。
您可以看到这一点:
从小提琴上看,您的实际代码中有什么问题并不十分清楚。我认为这里的主要问题是@get'winner',它相当于这个。get'winner。您正在调用一个收集方法,而不是entry方法。@只是这个或这个的替代品。在函数的情况下。你的代码应该是
non_winners = @select (entry) ->
entry.get('winner') == false
_它只是一个对象,包含一系列方法,包括select。Backbone.js集合对象恰好包含下划线方法
就调试而言,大多数情况下,将浏览器中的JS映射到您的CoffeeScript代码并不重要。有时JS输出不是您所期望的,因为缩进未对齐或缺少括号。这也很容易调试-只需查看JS输出
Underline.js和Backbone.js只是js库,所以您可以签出或调试它们的代码。这是相当干净和直接的 啊。我想你成功了。出于某种原因,我认为只有this.get可以工作,而entry实例变量没有。非常感谢您的调试建议。