2016-03-28 4 views
1

В файле .hbs Я создаю меню навигации с различными элементами. Один из элементов будет отображаться только в том случае, если пользователь является pro (boolean).Передать переменную от инициализатора до руля .hbs (плагин дискурса, возможно, Ember вообще)

var pro - это переменная, установленная в моем инициализаторе, и мне нужно передать ее моему файлу .hbs для условного отображения одного из пунктов меню.

В Ember, как это делается?

ответ

1

В таком случае мы используем службу для хранения переменных во время жизненного цикла приложения. Инициализатор помещает переменные и пункты меню в сервис. Компоненты меню извлекают переменные из службы.

Вы также можете определить помощника для извлечения переменной из службы.

+0

Ах так поставить функцию в службе и определить помощника в инициализаторе, который будет доступен в шаблоне? – stevenpslade

+0

И да, и нет. Компонент меню извлекает пункты меню из службы. Шаблон компонента меню выполняет итерацию по этим пунктам меню. Вот и все, нам не нужен помощник. – ykaragol

0

У меня была такая же проблема: мне пришлось использовать переменную языка, установленную в моем html, и мне нужно было использовать эту языковую переменную в моем шаблоне. Я использовал помощник для этого: в помощнике вы можете использовать переменную pro, которая установлена ​​в вашем инициализаторе (если вы его объявили).

пример:

function myInit(pro) { 
    var template = ...; 
    var data = ...; 
    Handlebars.registerHelper('ifProUser', function(item) { 
     if (pro) { 
     return "pro menu here"; 
     } else { 
     return ""; 
     } 
    } 
    var html = template(data); 
    ... 
} 

Затем в шаблоне просто использовать:

{{ifProInit}}{{/ifProInit}} 
+0

Итак, в шаблоне hbs я буду делать '{{#if ifProUser}}'? – stevenpslade

+1

Вы будете использовать помощник {{ifProUser}} {{/ ifProUser}} –