Yeoman Generator提示

时间:2014-08-25 17:30:19

标签: javascript arrays yeoman-generator

我正在构建一个yeoman生成器,并且在回答提示时需要分配一个额外的值/答案。

我找到了一种方法来提示用户另一个问题,但我需要的是在后台自动分配预定义的答案 - 因此用户不会看到它发生,而不是问用户另一个问题。这是下面的一个例子。还需要为12个以上的值列表执行此操作,因此下面的“when”命令并不理想,因为我必须将when语句设置为12次以上

   this.prompt([{
      type: 'list',
      name: 'redWhite',
      message: 'what colour',
      choices: ['red', 'white', 'blue', 'black', 'green', 'yellow', 'purple', 'cyan', 'magenta', 'brown']
    }, {
      when: 'redWhite.red',
      type: 'confirm',
      name: 'blue',
      message: 'Red is nice, but how about blue instead?'
    }, 

  /*So instead of prompting user again, just need to assign a predefined value here
   , {
      when: 'redWhite.red',
      answer: redFooBar
    }, */

    {
      when: 'redWhite.white',
      type: 'confirm',
      name: 'green',
      message: 'White is nice, but how about green instead?'
    }, {
      name: 'otherColors',
      message: 'What other colors do you like?'
    }], function (answer) {
      // answer = {
      //   redWhite: 'red',
      //   blue: false,
      //   green: false,
      //   otherColors: 'pink, purple-ish'
      // };
    }); 

1 个答案:

答案 0 :(得分:7)

你不需要这里的when功能,因为它只是提示用户回答另一个问题。

您可以在提示回调函数中使用数组来获取一个提示答案的多个值,如此

//prompt user to answer questions
this.prompt([{
        type: 'list',
        name: "fruit",
        message: "What is your favourite fruit",
        choices: [{
            name: 'Apple',
            value: ['apple', 'Apple Juice', 'Apple Pie' ]
        }, {
            name: 'Banana',
            value: ['banana','Banana Juice','Banana Bread']
        }, {
            name: 'Oranges',
            value: ['oranges','Orange Juice','Orange Pudding']
        }]
    }]);

//confirming the prompts and storing answers - pull required value from array number
this.prompt(prompts, function(answers) {
  this.fruitChoice = answers.fruit[0];
  this.fruitDrink = answers.fruit[1];
  this.fruitDessert = answers.fruit[2];
}