Javascript 视图中的角度承诺不显示
我有以下angular应用程序,该服务未正确返回数据。如果我将Javascript 视图中的角度承诺不显示,javascript,angularjs,Javascript,Angularjs,我有以下angular应用程序,该服务未正确返回数据。如果我将$http回调响应记录在console.log中,我就知道web服务中的数据是正确的 但是,在我的应用程序中,它没有显示。以下是HTML: <div id="main-content" class="content" ng-app="wflow-app" ng-controller="main-controller"> <h3>Actors</h3>
$http
回调响应记录在console.log中,我就知道web服务中的数据是正确的
但是,在我的应用程序中,它没有显示。以下是HTML:
<div id="main-content" class="content" ng-app="wflow-app" ng-controller="main-controller">
<h3>Actors</h3>
<li>
<ul ng-repeat=" a in actors">
<li>{{a}}</li>
</ul>
</li>
为什么这不起作用
如果我在控制器中使用此选项,它将起作用:
dataService.getActors().then(function (data) {
$scope.actors = data;
});
你的行李在哪里
$http.get(_baseUrl + '/actors').then(function(response){
console.log(response.data);
deferred.resolve(response.data);
}).catch(function(response) {
deferred.reject(response.statusCode);
});
如果您的服务器使用非200响应进行响应,则目前不会被拒绝
我个人会把这个改成
var getActors = function(){
return $http.get(_baseUrl + '/actors');
};
此外,dataService.getActors()的结果也是一个承诺。因此,因为返回值是一个promise,所以应该调用promises-THEN方法,如下所示
dataService.getActors().then(function(response) {
$scope.actors=response.data;
}).catch(function(response) {
//oops
})
这是因为$http返回一个承诺。$q所做的唯一一件事是使用response.data解析,而不是使用response解析。我添加了您建议的代码,但这没有什么区别。GET工作正常,我只是不明白为什么
$scope.actors=dataService.getActors()代码>部分不起作用\根据Angular,如果在视图中使用承诺,它将在承诺为真时更新视图-但它无法控制拒绝-如果承诺永远无法解决,则您会有不良行为。我建议您使用dataService.getActors()方法调用它。您提到的方法的另一个缺点是,它使调试变得非常困难,正如您现在所发现的那样——至少我建议您使用它,然后使用您喜欢的方法。我已经看过了,它应该可以工作。我建议只返回$http.post来简化它(它返回一个承诺),然后尝试$scope.actors=dataService.getActors();-假设你的决心是好的——希望它能起作用:)
dataService.getActors().then(function(response) {
$scope.actors=response.data;
}).catch(function(response) {
//oops
})