2017-07-28 20 views
0

templateDataプロパティが通常挿入される場所の代わりに、Yeomanテンプレート内からメソッドを呼び出すことはできますか?Yeoman:テンプレート内からメソッドを呼び出せますか?

テンプレート内でランダムなGUIDを複数回生成する方法を検討しています。私_Product.xmlテンプレートファイルでは、私が持っている: -

私のヨーマン・ジェネレータで次に
<someNode value="<%= randomGuid %>"> 
<someNode value="<%= randomGuid %>"> 
<someNode value="<%= randomGuid %>"> 
<someNode value="<%= randomGuid %>"> 
<someNode value="<%= randomGuid %>"> 

私が持っている: -

_buildTemplateData() { 
    this.templatedata.randomGuid = uuid.v4(); 
} 

writeToDisk() { 
    this.fs.copyTpl(this.templatePath('_Product.xml'), this.destinationPath('Product.xml'), this.templatedata); 
} 

そして、私は得るために期待していた: -

<someNode value="43EE86E4-AC19-4A82-A053-7FE0857AB1F5"/> 
<someNode value="7F7184CF-23A7-4383-B5BB-E3A383BC6A0A"/> 
<someNode value="5B7A26C1-A449-4B35-94E3-D214C62CEAD7"/> 
<someNode value="641D7EC0-AFB1-4646-8B52-5DC71B8FFC50"/> 
<someNode value="CEB94BA1-D487-4838-A354-FAFB4D8B188A"/> 

が、代わりに私は得る: -

<someNode value="43EE86E4-AC19-4A82-A053-7FE0857AB1F5"/> 
<someNode value="43EE86E4-AC19-4A82-A053-7FE0857AB1F5"/> 
<someNode value="43EE86E4-AC19-4A82-A053-7FE0857AB1F5"/> 
<someNode value="43EE86E4-AC19-4A82-A053-7FE0857AB1F5"/> 
<someNode value="43EE86E4-AC19-4A82-A053-7FE0857AB1F5"/> 

私は知っているtemplateDataのプロパティとして多数のGuidを作成して、それぞれを個別に参照して渡すことができますが、Product.xmlファイルの外側でguidを再利用する必要がないので、できるだけコードをトリミングするのが好きです。 私は関数呼び出しと同様のことをやろうとしています....しかし、これはここに投稿するより基本的な例です。

アイデア? ありがとう

答えて

1

はい、可能です。その後

this.fs.copyTpl(a, b, { 
    getUuid:() => uuid.v4() 
}); 

をテンプレートでそれを呼び出す:テンプレートコンテキストとして関数を渡す

<someNode value="<%= getUuid() %>"> 
関連する問題