我正在构建一个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'
// };
});
答案 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];
}