2015-09-06 68 views
1

我想更新视图,即使更改发生在另一台计算机上而不刷新页面。我尝试设置间隔并每隔10秒调用我的api,清除缓存。这里的问题是每十秒钟我将不得不重新加载我所有的数据,并且为了更新我应该切换状态。是否有更好的方法来处理这个问题?不断更新视图angularJs

+0

*为视图更新我应该切换状态*:不。为了更新视图,您应该更改模型,即视图的$范围内的内容。 –

+0

是的,你可以,我可以每10秒调用一次api,如果我现在的模型与我从数据库更新模型中获取的数据不同。 –

+0

这个问题解决了吗? –

回答

0

即时管理解决这个问题。我创建了一个函数,检查服务器的数据是否与来自模型的数据相同,如果没有,我更新缓存而不删除它和模型。

this.refresh = function(){          
    apiService.someFunction(false) //the false is parametr for cache      
     .then(function(someValue) { 
      if(someValue.length !== vm.model.length){ //check if the model is equal with the data from database                 
       var cache = $cacheFactory.get('$http') 
       var get = cache.get('URL'); //getting the cache      
       var data = angular.toJson(someValue); //turn response from then to Json 
       get[1] = data; //changing the cache data      
       vm.model= someValue; //changing the model data 
      } 
    }) 
} 
+0

,虽然这可能起作用,但它是非常低效的,因为您正在为完全相同的数据进行两次数据调用。你真的应该考虑使用套接字库,如sockets.io或类似的,如果你想实时通信。 – Claies

+0

@Claies是的,我知道问题是服务器已经存在,它的共享主机,他们不想离开,所以我不能使用node.js来安装sockets.io.如果他们决定更换服务器,我会更新应用程序。 –

+0

如果您对服务器实现有任何意见,可能有一个端点在每次后续调用中仅返回已更改的数据?然后angular.extend到你现有的“模型”。 –