Im Yeomanにとってはかなり新しいですが、再帰的なプロンプトを実現しようとしています。 jhipsterのEntityGenerator(https://github.com/jhipster/generator-jhipster/tree/master/generators/entity)に触発されました。Yeoman再帰的なプロンプト、コールバックは実行されません
しかし、ループの発生を防ぐどこかにエラーがあるようです。次のように
私のコードは次のとおりです。
var yeoman = require('yeoman-generator');
var inputFields = [];
module.exports = yeoman.Base.extend({
prompting: {
askForName: askForName,
askForFields: askForFields
}
});
function askForData() {
var prompts = [{
type: 'input',
name: 'name',
message: 'Name?',
default: 'Slim Shady'
}];
return this.prompt(prompts).then(function (props) {
this.props = props;
this.async();
}.bind(this));
}
function askForFields() {
var cb = this.async();
askForField.call(this, cb);
}
function askForField(cb) {
var prompts = [{
type: 'confirm',
name: 'fieldAdd',
message: 'Do you want to add a field?',
default: true
}, {
when: function (response) {
return response.fieldAdd === true;
},
type: 'input',
name: 'fieldName',
message: 'What is the name of your field?'
};
this.prompt(prompts, function (props) {
this.log("Done prompting: ", props);
if (props.fieldAdd) {
var field = {
fieldName: props.fieldName,
};
inputFields.push(field);
}
if (props.fieldAdd) {
askForField.call(that, cb);
} else {
cb();
}
}.bind(this));
}
再帰プロンプトの最初のループは、意図したとおりに働いているが、伐採this.log("Done prompting: ", props);
は実行されません。そのようなプロンプトのコールバックのようなことは起こりません。ジェネレータは、1回の実行後にただ終了します。
私はすべての機能のthis
-sをログに記録し、比較しました。それらは同じです。私は多くの同様のstackoverflowの質問を見てきましたが、それはdoesntの仕事を除いて何か間違って見ることができません。
ご意見やご感想はありがとうございます。
私の遅い返事で申し訳ありませんが、私は立ち往生してからしばらくの間、氷上でプロジェクトをしていました。とにかく、ソリューションは完璧に働いた、ありがとう! – lassejl