TLDR; http://jsfiddle.net/squarism/zaVrE/
Я новичок в Backbone.js и Underscore.js (Подчеркивание, я думаю, включено в Backbone).Я использую это в приложении rails, но этот кусочек не имеет / не должен иметь значения.Я слежу за Railscast, состоящим из двух частей, о магистральной линии.Я пытаюсь получить подчеркивание, основную часть, coffeescript, отладку и все документы.К путанице добавляются различия между Underscore API и версией coffeescript.
Например: у меня есть массив объектов User в виде «записей».У каждого есть атрибут победителя.Так что это будет работать:
# why does this return everyone?
non_winners = @select(entries) ->
@get('winner') == false
Так что здесь много чего происходит.@Select от подчеркивания.@Get от позвоночника.И все это - coffeescript.Перевод этого в строку отладки JS немного сумасшедший.В конце концов, хотя я разобрался с javascript вне магистрали, чтобы проверить это.Моя проблема в документах:
В документах говорится:
filter_.filter(list, iterator, [context]) Alias: select
Я не знаю, как это читать.Я просто назвал @select, который, по моему мнению, приравнивается к .select (), но я не дал ему итератор.В Javascript на консоли браузера он возвращает массив только с объектами, где winner равно false.В моем приложении, если я console.log (non_winners), он возвращает мне всех, но console.log (non_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
Я нахожу несколько странных вещей:
- Как люди на самом деле отлаживают эту сумасшедшую комбинацию.Coffeescript, Underscore, Backbone, о мой!Пока я все не понимаю, я бы хотел поиграть с этим.JSfiddle (ниже) хорош, но есть ли надежда на использование консоли браузера?
- Как вы переводите этот бизнес @select () (@ является правильным псевдонимом coffeescript, который указывает на коллекцию Backbone?) В_.select () api docs подчеркивания?Порядок аргумента другой.
- В приведенном выше примере (и в скрипте ниже) возвращается только один человек.Но в моем приложении все люди возвращаются.
- Я могу заставить одного человека быть возвращенным в скрипке, но синтаксис отличается от примеров в railscast (# 323).
- код, который работает в скрипте, все еще действительно не соответствует документам подчеркивания API.Я хотел бы научиться читать документы по подчеркиванию (научиться ловить рыбу против одной рыбы и т. Д.).
Вы можете увидеть это в действии: http://jsfiddle.net/squarism/zaVrE/