2013-02-12 8 views
6

これよりも玉の文字列の最初の文字を大文字にする良い方法はありますか?翡翠のテンプレートでは、より良い方法をucfirstに?

for list in project.lists 
    li #{ucfirst(list.name)} 

ありがとう:私は変数は醜いです活用したいたびにこれを実行

for list in project.lists 
    - list.name = list.name.charAt(0).toUpperCase() + list.name.slice(1); 
    li #{list.name} 

、私は私のようなすべてのテンプレートで利用可能なカスタム関数を定義することができジェイドのいずれかの方法がありますあらかじめ!

答えて

15

#{}の内容は標準JSとして実行されるため、そのようなもので使用するヘルパー関数を渡すことができます。あなたは指定していませんが、あなたはエクスプレスと一緒に玉を使用していると仮定すると、あなたはこのような何かを行うことができます。

app.locals.ucfirst = function(value){ 
    return value.charAt(0).toUpperCase() + value.slice(1); 
}; 

をジェイドテンプレート内ucfirstと呼ばれる機能を公開することは。レンダリングするたびにlocalsの一部として渡すこともできますが、Expressを使用している場合は自動的に行います。

+1

私は感謝、探していたまさにでした:

mixin ucfirst(text) - text = text.charAt(0).toUpperCase() + text.slice(1); . #{text} 

だけで、他のミックスインとしてこれを呼び出します。 ) –

+0

うれしい私はこれにつまずいて、JavaScriptのPHP関数を使って汚いと感じていますが、 'ucfirst'はあまりにも便利です! –

0

CSSを使用する場合は、ターゲット要素内のすべての単語の最初の文字を大文字にするクラスを作成できます。

CSS

.caps { 
    text-transform: capitalize; 
} 

ジェイド

div.caps 
    each foo in ['one', 'two', 'three'] 
     span #{foo} 

結果のHTML結果の

<div class="caps"><span>one</span><span>two</span><span>three</span> 

ビュー

あなたがグッとパグを使用している場合
One Two Three 
0

、これが役に立つことができます:

li 
    +ucfirst(list.name) 
関連する問題