2016-03-28 4 views
1

In einer .hbs Datei erstelle ich ein Navigationsmenü mit verschiedenen Elementen. Eines der Elemente wird nur angezeigt, wenn ein Benutzer ein Pro (boolean) ist.Variable vom Initializer zum Lenker übergeben .hbs (Discourse Plugin, vielleicht Ember im Allgemeinen)

var pro ist eine Variable in meinem Initialisierer gesetzt und ich muss es übergeben meine .hbs Datei für die Zwecke einer bedingten Darstellung eines der Menüpunkte.

In Ember, wie wird das erreicht?

Antwort

1

In einem solchen Fall verwenden wir Service, um Variablen während des Anwendungslebenszyklus zu speichern. Der Initialisierer setzt die Variablen und Menüelemente in den Dienst. Menükomponenten rufen Variablen aus dem Dienst ab.

Sie können auch einen Helfer zum Abrufen der Variablen aus dem Service definieren.

+0

Ah so die Funktion in Betrieb genommen werden und die Helfer in der Initialisierungsliste definieren, die in Vorlage verfügbar sein werden? – stevenpslade

+0

Beide Ja und Nein. Menükomponente ruft Menüelemente vom Dienst ab. Die Menüelementvorlage iteriert über diese Menüelemente. Das ist alles, wir brauchen keinen Helfer. – ykaragol

0

Ich hatte ziemlich das gleiche Problem: Ich musste eine Sprachvariable verwenden, die in meinem HTML festgelegt ist, und ich musste diese Sprachvariable in meiner Vorlage verwenden. Ich habe dazu einen Helfer benutzt: Im Helfer kann man die Variable pro verwenden, die in Ihrem Initialisierer gesetzt ist (vorausgesetzt, Sie haben es deklariert).

Beispiel:

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

Dann in der Vorlage nur verwenden:

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

Also in der hbs Vorlage würde ich dann '{{#if ifProUser}}'? – stevenpslade

+1

Sie verwenden den Helfer {{ifProUser}} {{/ ifProUser}} –

Verwandte Themen