在生成的模板中使用yeoman-generator变量

时间:2017-05-25 14:40:05

标签: javascript angularjs yeoman yeoman-generator yeoman-generator-angular

我正在与自耕农生成一个angularJS项目。我用一个参数调用生成器,然后通过执行以下操作从主生成器的脚本(index.js)中获取它:

this.argument('name', { type: String });

我可以使用:

在同一个index.js中使用此参数
this.options.name

问题:我想在我的模板中使用同样的this.options.name,以便我可以将其值赋给变量。我该怎么办?

2 个答案:

答案 0 :(得分:2)

要从Node.js访问yeoman变量,我执行了以下操作:

我从sails重命名了文件connections.js,将其重命名为_connections.js,并将其放置在与yeoman生成器的“templates”文件夹中的sails文件夹相同的级别。像这样离开:

> yeomanGeneratorFolder 
>   |-app   
>      |-index.js   
>      |-templates
>        |-sails
>        |-_connections.js
>        |- ....

在Generator的index.js上。我创建了一个函数来在js文件上写入我需要的数据。我在copyTpl()函数中发送了一个JSON对象,其中包含我在新文件中需要的数据:

connections() {
      this.fs.copyTpl(this.templatePath('_connections.js'), this.destinationPath('./config/connections.js'),
      {
        dbName: this.item.dbName
      });
    }

在_connections.js中我写道:

database: '<%=dbName%>' //optional

注意 dbName 是我给index.js中copyTpl()函数内发送的JSON的密钥。

答案 1 :(得分:0)

定义角度常量并将其设置为此值。然后在与该视图关联的控制器内部,只需注入此常量。

myApp.constant('YEOMAN_NAME', MYVALUE);

然后将常量注入与视图关联的控制器内,将此常量与范围变量关联,并在模板中使用它。

现在&#34;最难&#34;部分是如何在角度环境中获得此值。

我不知道你的index.js是什么,我想这只是与你的页面相关的主要脚本。 在这种情况下,如果您在主脚本内部执行类似

的操作
this.myVariable = 'myValue';

您实际上正在为窗口对象创建一个新属性(如果您没有在某个函数中执行此操作)

所以你可以做的是将这个变量与一个窗口参数相关联,并尝试尽可能最具体,这样你就没有风险覆盖窗口中的其他内容,如:

window.myYeomanName = this.options.name;

然后你可以在任何地方定义你的常数内角:

myApp.constant('YEOMAN_NAME', window.myYeomanName);