2017-07-28 76 views
0

你可以從一個Yeoman模板中調用一個方法來代替templateData屬性通常被注入的地方嗎?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"/> 

我知道我可以創建一堆Guid作爲templateData的屬性,並將它們全部傳入,分別引用每個Guid,但是我想避免這種情況,因爲我不需要重複使用Product.xml文件之外的guid, d儘可能地減少代碼。 我也在找一個類似的函數調用....但這是在這裏發佈的更基本的例子。

任何想法? 謝謝

回答

1

是的,這是可能的。傳遞函數爲模板背景:

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

然後把它在你的模板:

<someNode value="<%= getUuid() %>"> 
相關問題