2
我想有正常的.command()
處理程序,它執行一些異步調用,然後決定它是否會輸出或將用戶引入模式。那可能嗎?如何以編程方式進入模式?
如果是的話,我如何設置基於我的異步調用的分隔符?我可以動態設置此模式的自定義.action()
功能嗎?
另外,是否有可能傳遞一個上下文到這個動態創建的模式?
我想有正常的.command()
處理程序,它執行一些異步調用,然後決定它是否會輸出或將用戶引入模式。那可能嗎?如何以編程方式進入模式?
如果是的話,我如何設置基於我的異步調用的分隔符?我可以動態設置此模式的自定義.action()
功能嗎?
另外,是否有可能傳遞一個上下文到這個動態創建的模式?
您可以使用完全不同的一組命令創建第二個(或多個)Vorpal實例。這些也可以在運行中聲明。
通過在新實例上調用vorpal.show()
,這將在該「模式」期間將UI從舊Vorpal「分離」到新的上,並且對於用戶來說,對於用戶來說,你得到了一組全新的命令,分隔符等。
var modeA = new Vorpal().delimiter('fooland:');
var modeB = new Vorpal().delimiter('barland:');
modeA.command('foo'); // ...
modeB.command('bar'); // ...
// Only foo is present as a command.
modeA.show();
setTimeout(function(){
// Now bar is present as a command instead.
modeB.show();
}, 5000);
也許這是有效的,但它不能解決問題。這樣做和聲明普通模式一樣,在'.init()'上工作,然後進入靜態聲明的模式。也許還不清楚,但我希望以編程方式進入模式的要點是能夠在模式被調用時在其中設置事物 - 動態操作處理程序,動態分隔符。 – fiatjaf
啊。我見過的其他人做的事情是創建第二個(或多個)Vorpal實例,它們具有完全不同的一組命令(您可以隨時聲明這些命令),然後只需調用vorpal.show()新的實例。這將在舊的Vorpal上將用戶界面「分離」到新的「模式」,並且用戶看起來會得到一組全新的命令,分隔符等。我是否正確理解了你這次? – dthree
是的,這是一個很好的解決方案。文檔應該提到這一點,因爲雖然它在那裏,但很容易錯過這種可能性 - 這是一個強大的可能性。 – fiatjaf