Табуляция в Meteor — пример понимания микроскопа

Я пытаюсь понять этот код из проекта Discover Meteor Microscope:

https://github.com/DiscoverMeteor/Microscope/blob/master/client/templates/includes/header.js

Это делается для того, чтобы сделать вкладку текущего маршрута активной на странице, добавив на вкладку «активный» класс, но есть некоторые фрагменты кода, которые я не понимаю. Конкретно:

 return Router.current() && Router.current().route.getName() === name

Я не понимаю, откуда взялось имя и зачем оно нужно. Существуют ли случаи маршрутизации с помощью iron:router, когда Router.current() не возвращает true (например, маршруты на стороне сервера)?

Меня также смущает, почему логическое значение возвращается вместе с классом во вспомогательной функции:

 return active && 'active';

Применяет ли пробел только «активный» класс к вкладке, если логическое значение возвращает true? Может ли кто-нибудь указать дополнительную информацию о том, как это работает с пробелами, если это так?

Большое спасибо.


person bgmaster    schedule 05.12.2014    source источник


Ответы (1)


я не понимаю откуда взялось название

Переменная name является аргументом функции-предиката, передаваемой функции итератора _.any (http://underscorejs.org/#some), так что в основном это итерация по каждому аргументу помощника (хранится в переменной args), чтобы увидеть, соответствует ли какой-либо из них функции предиката.

Возвращаемое значение функции предиката будет истинным, если хотя бы один аргумент помощника проходит проверку предиката, которая сравнивает имя текущего маршрута с текущим итерируемым значением.

Существуют ли случаи маршрутизации с помощью iron:router, когда Router.current() не возвращает true

Router.current(), как следует из названия, является реактивным источником данных, возвращающим текущий RouteController, поэтому вполне возможно, что в какой-то момент он может вернуть неверное значение (в частности, при первой инициализации приложения).

return active && 'active';

Что касается этой строки JS, она имеет мало общего с пробелами, это просто обычный трюк JS, когда логическое выражение, состоящее из последовательности операторов AND, перестает выполняться, когда встречает ложное значение, и возвращает последнее проанализированное значение.

Это означает, что если active ложно, то оно немедленно возвращает false, но если оно истинно, то все выражение возвращает строку 'active'.

Единственное место, где задействованы пробелы, это то, что когда помощник, используемый в качестве значения атрибута HTML, оценивается как ложное значение, тогда атрибут не попадает в DOM.

Я лично использую этот синтаксис, который я нахожу менее неясным, но он в основном основан на мнении.

return active?"active":"";
person saimeunt    schedule 05.12.2014
comment
Это огромная помощь. Спасибо :-) - person bgmaster; 05.12.2014