Какая разница между помощниками Handlebars и помощниками Handberbars Ember?

Я не могу догнать все эти изменения, сделанные для простых ручек и модифицированных помощников Ember Handlebars. Если я правильно помню, вы можете зарегистрировать помощника со следующими методами.

  • Ember.Handlebars.helper
  • Ember.Handlebars.registerHelper
  • Ember.Handlebars.registerBoundHelper
  • Handlebars.registerHelper

Это слишком много для меня. Не могли бы вы объяснить это на земле, какая разница?

Ответ 1

Ember.Handlebars.registerHelper - базовый помощник, который не привязывает строку аргумента к свойству. Например, рассмотрим помощник hello, созданный с помощью registerHelper, который просто возвращает приветственное сообщение.

Ember.Handlebars.registerHelper('hello', function(name) {
  return 'Hello ' + name;
});

Когда вы используете его в шаблоне,

{{hello name}}

Вы получите текст дисплея как Hello name. Значение свойства name выглядит не.

Чтобы получить значение свойства name в нужном вам помощнике, registerBoundHelper. Как видно из названия, он создает привязку к свойству name. В любое время при изменении name помощник снова вызывается для повторного запуска. Реализация аналогична,

Ember.Handlebars.registerBoundHelper('hello', function(name) {
  return 'Hello ' + name;
});

Ember.Handlebars.helper совпадает с registerBoundHelper с некоторыми дополнительными проверками для автоматического определения того, какой хелпер вы хотите.

Ваниль Handlebars.registerHelper не используется в Ember. Он будет создавать похожие помощники для проектов, не использующих Ember.

Ответ 2

  • Ember.Handlebars.helper должен использоваться для регистрации помощников, другие методы - только ограниченные версии. Ember.Handlebars.helper отображает HTML с привязками, которые синхронизируют представления и модели. Функции, представления и компоненты могут предоставляться как вспомогательные определения.

  • Ember.Handlebars.registerBoundHelper точно так же, как Ember.Handlebars.helper, но вы можете предоставить только функцию как определение помощника.

  • Ember.Handlebars.registerHelper ранее делегирован Handlebars.registerHelper. Ember.Handlebars.registerHelper больше не существует, но Handlebars.registerHelper по-прежнему используется внутри Ember для создания всех помощников после установки привязок.