编辑:感谢您重复的链接,它有所帮助,但我仍然感到困惑。我明白,如果我刚刚写了$scope.phones = function(){ return $http.get(url)}
,那就不会起作用了。我已经在使用.then来评估这个承诺。我不明白为什么我无法在我的诺言中使用$ scope.phones = response.data获得承诺返回到我的$ scope.phones的价值。
如果我写$ scope.phones = GetPhones()基本上它是什么"调用函数GetPhones,评估它并返回承诺"。但我也在写.then return response.data
。为什么不足以评估承诺?
我知道它是异步的,所以代码的其余部分已经运行了,但是应该包含我在模板中使用的ng-repeat。为什么通过为其分配response.data来更改值会导致我的浏览器加载数据但是为其分配return response.data,不会触发更新?
我正在尝试查询API以获取一些数据并将其显示在我的.html文件的列表中。但出于某种原因,我的回归"丢失数据......(参见注释代码)
(我正在做官方angularjs教程的变体)
$scope.GetPhones = function () {
return $http.get($scope.baseurl + '/api/PhoneApi')
.then(function (response) {
$scope.phones = response.data; //It works like this
return response.data; //but not like this
});
};
$scope.phones = GetPhones();
即使两行都在代码中它仍然有用,它就像GetPhones();在$ scope.phones中永远不会调用,但是当我加载页面时,该函数被调用一次......
当我将.then返回值传递给函数返回值时,我想我做错了什么?实际上很难找到这样的例子,大多数人似乎都使用$scope.var = response.data;
。
帮帮我理解这个?