javascript - 在提示之间传递数据

标签 javascript node.js yeoman yeoman-generator

我可以在 yeoman 中的两个提示之间传递数据吗?

例如,我有两个提示,例如

{
  type: 'input',
  name: 'Name',
  message: 'Name?'
},{
  type: 'input',
  name: 'package',
  message: 'Package?',
  default: 'org.my.app.'+<prompt.name>
}

我想将 name 属性显示为包的默认值?我能想到的一种方法是:

  • 默认显示模板(如示例所示)
  • 稍后在为用户创建最终模板时更改该值。

我尝试的另一种方法是使用 when

{
  type: 'input',
  name: 'Name',
  message: 'Name?'
},{
  when: (response) => {
    this.testValue = response.Name
    return true
  },
  type: 'input',
  name: 'package',
  message: 'Package?',
  default: 'org.my.app.'+this.testValue
}

但即使函数内部的值已存储在 this.testValue

中,它也会给出 undefined

还有什么更好的办法吗?

最佳答案

我终于找到答案了。实现它的方法是使用两个提示变量并在第一个 Promise 返回后运行第二个变量

const prompt1 = [{
  type: 'input',
  name: 'Name',
  message: 'Name?'
}];

return this.prompt(prompt1).then(props => {
  const prompt2 = [{
    type: 'input',
    name: 'package',
    message: 'Package?',
    default: 'org.my.app.'+props.name
  }];

  return this.prompt(prompt2).then(props => {
   //code goes here
  });
});

关于javascript - 在提示之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44020490/

相关文章:

javascript - CSS hover 不影响其他元素

javascript - 无法上传 .doc 或 .docx 文件

node.js - Jade +NodeJS : not rendered as desired

javascript - 将 CSV 文件从 URL 导入到 Node.js

gruntjs - 通配符包括

node.js - 使用 yeoman 生成角度应用程序时出错 : unhandled Template render error

javascript - IE 8 中的 indexOf () 和 underscore.js 库的 _.indexOf() - 避免区分大小写

javascript - 将 javascript 变量传递给 php mysql select 查询

node.js - 如何根据父属性查找和更新数组中的子文档

angularjs - 使用 grunt 构建的 Angular 应用程序中缺少 Assets