范围更改角度js时更新视图

时间:2014-06-02 11:16:28

标签: angularjs angularjs-scope angular-scenario

我正在开发一个角度社交应用,我几乎没有与范围绑定相关的问题。 我有来自http服务的范围数据,其列出了用户的订户。每当在搜索中 用户搜索任何用户并想要添加他,然后此时我进行http呼叫并返回订户列表的更新数据。但是,如果不刷新页面,它就不会在视图中更新。我可以使用间隔,但我不认为它会是解决方案,因为它会通过定期的http请求给我的服务器带来更多的负载。

JS

 this.loadsubscribers = function (){
 myService.subscriber().then(function(response){
     $scope.subscriber = response.data;         
    });
 }

 // i can make interval call for getting subscriber list but this will put load to my server.  

 $interval(function(){
  this.loadsubscribers();
 }.bind(this), 10000);   

this.loadsubscribers();

当用户点击添加订阅者按钮时,我需要更新此范围:    这里当用户点击添加用户检查功能时,调用并通过进行http调用将该用户添加到用户列表。 aftre保存数据我将当前的订户列表返回到http成功。但它没有更新视图。

$scope.checkit = function(value,id,firstname,str){      

    if(text === 'get along'){
    $http.post(baseurl+"ajax/subscriber_post", "subscriber_id="+value).success(function(data){
       //here i have to update scope subscriber and 
       // refresh view  as you can see i am doing it but it doesn't update view.  
      $scope.subscriber =data; 
      growl.addSuccessMessage( firstname+" is your fellow now");    
      $scope.datatocheck.push(value);
      $scope.Checkfriend(value); 
    });
}

间隔工作但我不想使用它。那么当数据不需要任何同步更新时,最好的方法是什么。

2 个答案:

答案 0 :(得分:0)

更改此行:

$scope.subscriber =data; 

对此:

$scope.$apply(function() {
    $scope.subscriber =data; 
});

答案 1 :(得分:0)

试试这个:

$scope.$eval(function() {
    $scope.subscriber = data;
});

如果您仍然遇到摘要循环问题,请尝试使用$evalAsync代替$eval