Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Coffeescript下划线.js和Backbone.js放在一起_Backbone.js_Coffeescript_Underscore.js - Fatal编程技术网

将Coffeescript下划线.js和Backbone.js放在一起

将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

TLDR

我不熟悉Backbone.js和下划线。我认为下划线包含在Backbone中。我在rails应用程序中使用了这一点,但这一点并不重要。我正在关注Railscapst《主干》的两集。我正在尝试浏览下划线、主干、咖啡脚本、调试和每个人的文档。下划线API和coffeescript版本之间的差异增加了混淆

例如:我有一个用户对象数组作为“条目”。每个都有一个赢家属性。因此,这将起作用:

# 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实例变量没有。非常感谢您的调试建议。