据我所知,AngularJS强迫你在任何地方都是异步的,但是我遇到了拖放验证的问题:
我使用的拖放实现是this one。
简而言之,当用户开始拖动项目时,会调用一个方法来验证拖动是否有效。
在这个验证方法中,我需要调用REST端点,该端点将执行一些逻辑以确定拖动源是否能够拖放到拖动目标上。
$ http.get是异步的,这使我无法返回get的结果。
在我看来,我的拖放配置如下:
<table class="grid" style="margin-left: 15px" ui-on-drop="onDrop($event,$data,someId)" drop-validate="validateDrop($data, someId)">
<!-- rows in here -->
</table>
在控制器中,我有方法:
$scope.validateDrop = (data, someId) => {
var res = $http.get('/some/url/that/returns/bool');
//
// how to return the result of the GET, and NOT a promise?
//
return true; //should return value of the GET
};
我考虑过的事情:
有没有办法
答案 0 :(得分:0)
您无法绑定承诺,因此您需要解决此问题。也许在拖动开始时创建唯一ID并将拖动信息/查找结果存储在散列中。然后绑定到结果,该结果将在get promise完成时更新。