Javascript 在生成的模板中使用yeoman生成器变量

Javascript 在生成的模板中使用yeoman生成器变量,javascript,angularjs,yeoman,yeoman-generator,yeoman-generator-angular,Javascript,Angularjs,Yeoman,Yeoman Generator,Yeoman Generator Angular,我正在与约曼一起生成一个angularJS项目。我用一个参数调用生成器,然后通过执行以下操作从主生成器的脚本(index.js)获取它: this.argument('name', { type: String }); 我可以在同一index.js中使用此参数,方法是: this.options.name 问题:我想在模板中使用相同的this.options.name,以便将其值赋给变量。我该怎么做?定义一个角度常数并将其设置为该值。然后在与此视图关联的控制器中,只需注入此常量 myApp.

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

this.argument('name', { type: String });
我可以在同一index.js中使用此参数,方法是:

this.options.name

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

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

myApp.constant('YEOMAN_NAME', MYVALUE);
然后只需将常量插入与视图关联的控制器中,将该常量与范围变量关联,并在模板中使用它

现在“最难”的部分是如何在角度环境中获得该值

我不知道你的index.js是什么,我想这只是与你的页面相关联的主脚本。 在本例中,如果在主脚本中执行以下操作

this.myVariable = 'myValue';
实际上,您正在为窗口对象创建一个新属性(如果在某些函数中没有这样做)

因此,您可以将此变量与窗口参数相关联,并尽量做到最具体,这样您就不会有覆盖窗口中其他内容的风险,例如:

window.myYeomanName = this.options.name;
然后你可以定义你的常数,只要做:

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

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

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

> yeomanGeneratorFolder 
>   |-app   
>      |-index.js   
>      |-templates
>        |-sails
>        |-_connections.js
>        |- ....
在生成器的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的键。

非常感谢您,我会尝试一下,并告诉您它是否有效。如果我想从Node.js访问一个变量怎么办?你是说你有Node.js应用程序服务器端和angularjs应用程序客户端吗?是的,我有@quirimo。我想从angularjs和nodejs侧访问Yeoman的生成器变量。在一侧有它们之后,在另一侧也可以很容易地获得它们。例如,如果上述解决方案适用于angularjs,那么您可以向节点发送AJAX请求并将这些变量发送到node.js。这有意义吗?我需要的是创建一个带有数据库连接的模块。此数据库连接的名称是自定义的,因此我要做的是使用参数(this.options.name)调用生成器,然后创建一个连接为this.options.name的模块