2015-04-16 10 views
20

Próbuję zbudować prosty moduł modalny w Ember, ale wydaje mi się, że "brak logiki" w Handlebars jest dla mnie zbyt nielogiczny. Czy istnieje jakiś rozsądny sposób, aby osiągnąć wynik w pewnym stopniu?Spokojna metoda łączenia łańcuchów i zmiennych w argumentach pomocnika Handlebars.js?

<h2>Nice block about {{title}}</h2> 
<a href="#" data-toggle="modal" id="add-item-{{title}}"> {{!this works}} 

{{#my-modal modal-id="add-item-{{title}}" header='New {{title}}'}} {{! those don't}} 
    <p>My body blabla</p> 
{{/my-modal}} 

Obecnie kończę dostając mój modalne id będąc "add-item-{{title}}", dosłownie, jak również tytuł modalne.

I ... nie, na razie nie zamierzam podawać "tytułu" jako nowego paramu i używać go w modalu. Nagłówek modalny w innym szablonie może nie być "Nowy {{title}}", ale "czy jesteś pewien?" lub "szczegóły dotyczące {{title}}".

+1

To, jak należy to zrobić, lub utworzyć właściwość obliczane w zakresie tego Łączy i buduje ciąg w sterowniku lub komponentu – Kingpin2k

+2

Ostatnią rzeczą, {{} } w ramach {{}} nie są obsługiwane – Kingpin2k

+1

oczywiście nie są obsługiwane! to jest właśnie mój problem :(jak interpolować zmienne w argumentach kierownicy? – igorsantos07

Odpowiedz

41

To, czego szukasz, to concat helper. Używając go, drugi przykład staną:

{{#my-modal modal-id=(concat 'add-item-' title) header=(concat 'New ' title)}} 
    <p>My body blabla</p> 
{{/my-modal}} 
+1

w momencie pytania pomocnik ten nie istniał :) thx – igorsantos07

+2

Wow! to jest bardzo przydatne. Nie miał pojęcia, że ​​to istnieje. Dzięki! – Sarus

+0

Dzięki temu pomogło mi uzyskać poprawny zestaw tła URL ... https://gist.github.com/Artistan/8ee82f6753dca632ca3307917b4e6034 – Artistan

0

Tak, przekazanie tytułu jest jak to zrobić. Jeśli trzeba dodać coś do tytułu, który jest czymś więcej niż tylko model.title, następnie nadziać nieruchomości obliczoną na kontrolerze (ES6 ciąg interpolacji składni):

kontroler

modalHeader: function() { 
    return `New ${this.get('model.title')}`; 
    }.property('model.title') 

szablon

{{#my-modal header=modalHeader}} 
    <p>My body blabla</p> 
{{/my-modal}} 

Jeśli chodzi o identyfikator, możesz zrobić kilka fajnych rzeczy w komponencie, aby go zastąpić, zobacz this codepen, ale nie wiem jak to się miesza z ember. Dlaczego mimo to chcesz ustawić identyfikator modalu?

+0

o id: zmieniłem nazwę na przykład w przykładzie, chodzi o to, aby ustawić wewnętrzny identyfikator modalny na coś, co można wyraźnie odnieść poza nim, więc może otwierać/zamykać modal poprzez własne zachowanie jQuery lub Bootstrap: – igorsantos07

+0

problem z nagłówkiem modalnym: różne modemy będą miały zupełnie inne tytuły.Nie będą działać, jeśli muszę ustawić właściwość obliczoną w samym modalu: kompletny nagłówek musi pochodzić z zewnątrz: – igorsantos07

+0

tak, dlatego obliczona właściwość 'modalHeader' znajduje się na kontrolerze –

Powiązane problemy