Помощник 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);
});