想实现页面的数据改变了(就是说我提交了数据到后台),想自动刷新一下数据,渲染在页面上了,只是数据刷新,怎么弄??急呀.....
分两种情况:
前端触发的改变,因为angular
是双向绑定的,一般来说$digest
循环会自动刷新数据。
如果是服务器数据改变不是由前端触发的,那么可以通过两种方法来实现前后端数据同步:
轮询,通过$interval
注册一个函数,每隔一秒就去服务器拿一次数据,然后刷新前端。
websocket
,使用websocket
进行双工通信,比如采用socket.io这个库就可以实现。
看了你的几个问题,还是不了解angualr。问题应该是出在你的数据显示上,而不是刷新的问题。从你的tag就看出来了,用angular的话jQuery是不需要的。
你的数据显示要使用angular的方式,单一数据如 <span>{{demoText}}</span>,数组如<ul><li ng-repeat="item in yourRows">{{item.name}}</li></ul>
在这个前提下,当$scope.demoText或者$scope.yourRows的值发生变化时,显示的数据自然同步变化,根本不存在你想象的刷新问题。
亲,不要拿angualr当作jquery来用哦。
angularjs是数据驱动类型的框架,如果数据发生改变了(没有特殊处理的情况下),页面是自动刷新的。不是特别理解你这个刷新是什么需求,给你列举几种。
前提:显示页面 -> 编辑页面(表单页面)
1,页面表单更改了,把数据提交到后台,后台返回的是成功或者失败的状态来表示数据保存成功与否。这个需求,是不需要手动刷新页面,页面会根据数据的变化自动改变。如果接收到了成功的状态,直接返回显示数据的页面就可以了,如果失败,则在当前页面不动,做异常处理。
2,提交表单到后台,后台会根据表单的数据做相应的操作,这样显示页面的数据可能会改变。如果此时返回显示页面,需要重新请求服务端,数据回来会自动刷新页面。
3,用了angular以外的框架或者方法获取数据,需要手动刷新才行。angular封装了ajax,就是$http和$q模块。如果用了其他的方法,angular可能监测不到数据的变化,需要在获得数据之后用$apply方法来手动刷新。比如:
$.get(api,function(response){//用jq获取数据
$scope.data = response;//此处angular可能监听不到$scope.data的变化
$scope.$apply();//用$apply来强制刷新数据
})
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
angularjs的数据应该是双向绑定的,把前端视图对应的model里的数据更新到最新就可以了。
你具体遇到了什么情况
上传图片的情况