Помощник Ember.js неправильно распознает параметр

Я пытаюсь привыкнуть к Ember.js и Handlebars, но одна проблема меня озадачивает. Я, вероятно, просто что-то пропустил, но долгое время был на нем и не мог найти ничего плохого.

У меня есть простой шаблон ниже:

<header>

    <h2><a href="#" class="link-box-title">{{project.pid}}-{{projectWindowTitle project}}</a></h2>

</header>

первый {{project.pid}} корректно выводит значение project.pid, и я хотел передать объект проекта в вспомогательную функцию ниже:

Handlebars.registerHelper('projectWindowTitle', function(proj) {

    var info = proj.pid;
    return info;

});

Я слишком упрощаю помощника, но результат всегда один и тот же, помощник ничего не возвращает:

<a href="#" class="link-box-title"><script id="metamorph-9-start" type="text/x-placeholder"></script>S2S<script id="metamorph-9-end" type="text/x-placeholder"></script>-</a>

Что я делаю неправильно?

Ответ 1

при использовании дескрипторов в ember.js вспомогательная подпись немного отличается от "простых" рулей. основное отличие состоит в том, что аргумент не "разрешен" до вызова помощника.

для вашего примера, proj - это "проект", поэтому вам нужно получить значение "project" из представления:

Handlebars.registerHelper('projectWindowTitle', function(property, options) {
    var project = Ember.getPath(this, property);
    var info = project.get("pid");
    return info;
});

Ответ 2

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

Как описано в ember docs, правильный способ создания хэндлеров handlebars для ember немного отличается от того, что вы делали бы в дескрипторах.

Что-то по строкам:

Ember.Handlebars.helper('projectWindowTitle', function(value) {
  var escaped = Handlebars.Utils.escapeExpression(value.pid);
  return new Handlebars.SafeString(escaped);
});