我想知道什么是最优雅的方式来初始化/从AJAX调用中填充的对象,并在指令中的某处“并发”使用。
我有一个带有这样片段的控制器:
$scope.var1 = {};
$scope.var2 = {};
$http({
url: "/httpService",
method: "GET",
params: {}
}).success(function(data, status) {
$scope.var1 = data.some; // (*1)
$scope.var2 = data.other;
})
我也在使用直接绑定到var1的指令:
var1 : '='
并且在指令内部对var1进行了一些检查。
if (var1.prop) // (*2) {
doSth();
}
取决于首先调用(* 1),(* 2)中的哪一个,结果是不同的。
您对此案有何建议?如果我只有一个变量设置为(* 1),我只会使用由$ http得到的promise。
我想知道在Angular中最常用的方法是什么。 将var1和var2组合成一个对象对我来说似乎并不优雅。
答案 0 :(得分:0)
在你的指令中创建一个函数,从$ http调用中获取promise。为函数提供一个将执行的回调:
if (var1.prop) // (*2) {
doSth();
}
通过制作回调的那一部分,您可以确保在数据从通话中返回之前不会完成。
一次通话你没有两个承诺。你有一个承诺和一个电话。这样对待它。
答案 1 :(得分:0)