Javascript Angularjs-异步指令结果

Javascript Angularjs-异步指令结果,javascript,angularjs,asynchronous,angularjs-directive,Javascript,Angularjs,Asynchronous,Angularjs Directive,我正在尝试构建一个指令,它允许我的用户在选项列表上选择一个项目,并且在用户执行选择后,它将返回所选项目作为承诺的结果 我正在尝试这样做: 场景是:例如,我的用户将单击一个按钮;它会在我的指令(或其他东西)上显示选项列表,创建一个承诺;用户选择一个项目;初始承诺通过选定项目解决,结果如下: function buttonHandler() { MyDirective.showOptions(config).then(function(selectedItem) { vm.i

我正在尝试构建一个指令,它允许我的用户在选项列表上选择一个项目,并且在用户执行选择后,它将返回所选项目作为承诺的结果

我正在尝试这样做:

场景是:例如,我的用户将单击一个按钮;它会在我的指令(或其他东西)上显示选项列表,创建一个承诺;用户选择一个项目;初始承诺通过选定项目解决,结果如下:

function buttonHandler() {
    MyDirective.showOptions(config).then(function(selectedItem) {
        vm.item = selectedItem;
    })
}
另一个问题是显示控制器内的选项列表,例如

可以使用AngularJS指令吗?或者我应该使用另一种方法来达到这个结果

对不起,如果我问了一些奇怪的问题

更新:

在与@Claies讨论我试图用这个“指令”解决的情况后,我意识到我的问题需要更多信息

真正的场景与产品形式有关。它有一组表示产品品牌、类型、颜色等的输入。每个输入都有一个来自不同API的选项列表,即一个用于品牌,另一个用于类型等。 在UI方面,当用户触发选择操作时,整个表单应该被隐藏,选项列表应该取代它。任何输入都应该能够触发此“选项选择”状态,执行选择后,结果应该显示在触发操作的输入中。
考虑到这一点,我认为这可能有助于处理用户选择而不是承诺,并在解决问题时设置产品属性。

我不确定我是否清楚您想要实现的目标。当您等待通常是阻塞操作(即服务器调用)的结果时,您返回一个承诺。在这种情况下,列表似乎没有理由成为阻塞调用,除了它正在等待用户之外。但是,UI本身并没有阻塞,因此没有必要做出承诺。我理解这篇文章关于创建非阻塞版本的
alert()
prompt()
、和
confirm()
,因为它们正在阻塞,但选项列表并没有阻塞。是的,您可以使用指令来完成这些事情。给我们一个代码示例。有关指令的更多信息,请参阅。@Claies。我想我的情况也与“阻塞操作”有关,因为它将是一个具有一些“状态”的组件。我的意思是,我的用户将通过3个步骤:-在开始时,它是一个容器,带有选定的项目引用和一些东西来“触发”选择操作。-当用户激活选项选择时,“我的组件”将隐藏以前的状态并显示选项列表。(如模式,或您选择,或取消)-在用户选择一个选项后,选项列表将被释放,我们的承诺将通过选择得到解决,回到初始状态。@georgeawg我将尝试用一个示例构建一个JSFIDLE,稍后发布。非常感谢。