Javascript 来自服务器的AngularJS绑定响应未在视图中更新
我正在开发一个移动应用程序。我在尝试在视图中中继ajax调用后从服务器返回的消息时遇到问题。其想法是在用户单击“刷新”按钮后在视图中显示消息 装订工作不完全如我所希望的那样。它不会向用户显示当前消息,而是显示上次单击刷新按钮时收到的消息。因此,用户在加载视图后第一次单击按钮时,不会发生任何事情。。。我不明白为什么视图更新不是即时的,而是在用户再次单击时才更改 以下是我的代码的简化版本: HTML:Javascript 来自服务器的AngularJS绑定响应未在视图中更新,javascript,jquery,ajax,angularjs,angularjs-scope,Javascript,Jquery,Ajax,Angularjs,Angularjs Scope,我正在开发一个移动应用程序。我在尝试在视图中中继ajax调用后从服务器返回的消息时遇到问题。其想法是在用户单击“刷新”按钮后在视图中显示消息 装订工作不完全如我所希望的那样。它不会向用户显示当前消息,而是显示上次单击刷新按钮时收到的消息。因此,用户在加载视图后第一次单击按钮时,不会发生任何事情。。。我不明白为什么视图更新不是即时的,而是在用户再次单击时才更改 以下是我的代码的简化版本: HTML: 我知道,自从视图更新以来,ajax调用每次都是成功的,但比应该更新的时间晚了一步。提前谢谢你的帮助
我知道,自从视图更新以来,ajax调用每次都是成功的,但比应该更新的时间晚了一步。提前谢谢你的帮助 当然!你必须使用角度服务
阅读文章。ajax调用完成后没有摘要周期,因此视图不会得到更新。如果您使用
$http
服务而不是$.ajax
。然后视图将得到更新
代码如下所示:
$http({method: 'GET', url: '/someUrl'}).
success(function(data, status, headers, config) {
window.localStorage.setItem('content', data);
$scope.rec = data;
}).
error(function(data, status, headers, config) {
...
});
当然,您必须将
$http
注入控制器。为了进行http调用,理想情况下,您需要为此类场景创建一个工厂。默认情况下,实现http的工厂将返回一个承诺,您可以根据该承诺更新范围变量
factory的语法为:
myapp.factory('getHttpData',function($http){
return{
getData: function(){
return $http.get('/urlA');
}
}
});
在控制器中:
.controller('testCtrl',['getHttpData',function(getHttpData){
getHttpData.getData().then(function(data){
$scope.rec = data;//Whatever you want to store in this variable
});
});
您可以在success中使用$scope.$apply()使其在当前情况下工作,否则您应该使用$httpWhat@AjayBeniwal说的,但我要再次强调,您应该使用$http而不是ajax。谢谢大家的建议。这确实是问题所在!
myapp.factory('getHttpData',function($http){
return{
getData: function(){
return $http.get('/urlA');
}
}
});
.controller('testCtrl',['getHttpData',function(getHttpData){
getHttpData.getData().then(function(data){
$scope.rec = data;//Whatever you want to store in this variable
});
});