2017-07-28 71 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() %>"> 
相关问题