Javascript 使用承诺呈现Vue应用程序,并等待用户输入

Javascript 使用承诺呈现Vue应用程序,并等待用户输入,javascript,vue.js,vuejs2,frontend,Javascript,Vue.js,Vuejs2,Frontend,我有一个设计问题,我目前有一个逻辑性很强的JS脚本,我写了很多承诺,并创建了如下结构: init() .then(result => doSomethingA(result)) .then(result => doSomethingB(result)) .then(result => loadVueApp(result)) 现在,loadVueApp()函数调用执行以下操作: new Vue({ el : '#app', render : h

我有一个设计问题,我目前有一个逻辑性很强的JS脚本,我写了很多承诺,并创建了如下结构:

init()
    .then(result => doSomethingA(result)) 
    .then(result => doSomethingB(result))
    .then(result => loadVueApp(result))
现在,
loadVueApp()
函数调用执行以下操作:

new Vue({
  el : '#app',
  render : h => h(App)
});
它呈现我的Vue应用程序,然后用户可以与该应用程序交互,进入各种屏幕,进行选择,我将这些选择存储在全局
EventBus
类型组件中

现在我的问题是,我应该如何将用户的选择传递回我的承诺之塔?我应该这么做吗

我可以根据出现的应用程序立即解析
loadVueApp
,然后再对逻辑繁重的脚本进行函数调用,但这感觉并不干净

有什么想法吗


提前感谢。

下面是一个简单的示例,它可以实现以下功能:

new Vue({
  el : '#app',
  render : h => h(App)
});
  • Vue组件从模板实例化并附加到
    元素,而不是从现有的DOM元素(如果您不希望UI最初可见)
  • 只有在单击提交按钮时,承诺才会通过输入的文本进行解析。组件实例将被销毁并从DOM中删除
const InputUI={
模板:“#输入ui”,
数据(){
返回{
值:“”,
};
},
};
函数getInput(){
返回新承诺(解决=>{
常量输入=新的Vue(输入);
inputUI.$once('submit',值=>{
inputUI.$destroy();
inputUI.$el.remove();
决心(价值);
});
输入。$mount();
document.body.appendChild(inputUI.$el);
});
}
getInput()。然后(值=>警报(值))

提交

为什么要将数据传递回承诺链,除非只有在做出选择并销毁Vue组件后,
loadVueApp
才能解析?(是这样吗?否则,你为什么要像那样将承诺串联起来?)是的,这就是我想要做的-在用户做出选择并关闭应用程序之前保持承诺未解决。感谢此解决方案,它看起来不错-但这需要手动编译或使用渲染功能。我使用的是单文件组件。我没有使用渲染函数,我的示例中没有任何内容不能转换为单文件组件。从文档:
但是,如果您依赖于以现有内容作为模板(使用el选项)装载到元素,您仍然会受到这些限制。
如果可能的话,我希望避免添加编译器,或者我遗漏了什么?我的答案以这种方式编写的唯一原因是使其可以在线运行。要使其成为单个文件组件,您只需将
和组件定义代码正常地放入.vue文件中(并删除
模板:“#输入ui”
)。其他一切都是一样的。嗯,对不起@Texa Moon,不确定我做错了什么:
-组件模板需要根元素,而不仅仅是文本。
但是如果我删除对
模板的引用,调用
new Vue()
如何知道从哪里获取HTML?