Неоднократно встречал в чужом коде на ember конструкции в которых присутствовал хелпер mut
. Настало наконец время разобраться что же это наконец такое и как это использовать
Эта штука появилась в Ember начиная с версии 1.13. Несколько раз заглядывал в документацию, но ничего внятного там не находил. Лишь несколько слов, что этот хелпер делает объект mutable
. Учитывая, что биндинги компонентов mutable сами по себе это вообще теряет какой-либо смысл.
Тем не менее давайте разбираться. Самым-то как раз интересным способом использования mut
является его комбинация с action
. В этом случае mut
возвращает функцию которая которая присваивает значение поступающее в mut
его аргументу.
Итак типовой код с mut
выглядит как-то так:
В этом случае при вызове функции updateAction
изнутри компонента this.get('updateAction')(1)
значение, переданное в неё присвоится перременной model.value
. В результате получим, что после этого model.value
будет равно 1.
Зачем же такие сложности? А затем, что существенно уменьшается количество кода. Не нужно писать код за пределами компонента. Достаточно прередать имя переменной куда поместить результат.
Рассмотрим более жизненный пример. Здесь при изменении поля input
значение переменной обновляется вообще без какого-либо кода в роуте/контроллере/компоненте.
Вывод
Использование mut
позволяет существенно сократить код, сделать его более простым и читаемым. Основная проблема это неочевидное использование — просто глядя в код невозможно понять, что к чему. Однако разобравшись с вопросом и познав дзен все становится просто и понятно.
Комментарии