Angular $watch数组并从服务器更新
Angular $watch array and update from server
我正在使用以下代码深入观察一个名为$scope.route.waypoints
的数组:
$scope.$watch('route.waypoints', _.debounce(function (prev, cur) {
if(!$scope.initialized) return;
$scope.saveRoute(true);
console.log('route waypoints DEEP check');
}, 500), true)
在我的saveRoute
方法I PUT
收集到服务器。
我想做的是从服务器返回后,我想再次更新我的路径点集合中的一些属性。但是当我使用以下命令更新时:
if(data.linked && data.linked.waypoints.length){
$scope.route.waypoints = data.linked.waypoints;
}else{
$scope.route.waypoints = [];
}
$scope.route.days = data.routes[0].days;
$watch再次被调用,整个过程重新开始。我怎样才能避免呢?我尝试使用$scope标志,但似乎它们又被忽略了。
您可以对这些数据使用不同的变量。例如,对于来自服务器的数据,你可以使用
$scope.route.waypoints
对于本地域数据,您可以使用另一个域,例如:
$scope.route.waypointsData
在这种情况下你将有更多的控制因为你的服务器数据和你的本地数据将被分开
更新1
所以我的建议是
$scope.$watch('route.waypoints', _.debounce(function (prev, cur) {
//update data in this place $scope.route.waypointsData
}, 500), true)
然后也打开监视器
$scope.$watch('route.waypointsData ', _.debounce(function (prev, cur) {
// do your PUT method in that place
}, 500), true)
和在ng-repeat中使用waypointsData。您正在手动同步模型之间的数据。
我通过扔掉$watches解决了这个问题。在阅读了这篇优秀的文章:http://www.benlesh.com/2013/10/title.html之后,我致力于将所有的指令都转移到ng-change指令中,并在必要时执行。$watches引入了一个不可测试的魔法,这就是我的问题的根源,它不再是可读的了。
相关文章:
- Highcharts可以从服务器加载数据,但不能更新
- 服务器发送的事件直到脚本完成才更新
- JQGrid使用服务器编辑后的更新数据刷新数据
- 使用Ajax调用在服务器上实时更新页面
- ASP:代码隐藏的字段变量在从更新面板中的服务器返回时丢失值
- 在从websocket服务器推送消息后更新$scope变量
- 我想听听服务器上的更改,并相应地更新我的网页.我如何用Javascript做到这一点
- 更新网页上Web服务器程序的实时输出
- 多久向服务器发送一次Http请求以检查更新?(Ajax)
- 如何更新服务器's的内容而不重新启动?(node.js)
- 如何在asp中保存服务器中的更新完整日历事件
- 使用Javascript中生成的XML将现有XML保存/更新到服务器
- jQuery侦听器以获取服务器更新
- 从服务器更新的 meteor 集合,不会在客户端上被动排序
- 如何从服务器更新phonegap应用程序的源代码
- Dojo JsonRestStore和ClientFilter从不从服务器更新
- 我的Angular视图没有用数据表单服务器更新
- Angular $watch数组并从服务器更新
- InDesign服务器-更新文本框架内容导致丢失或额外的内容
- 实时服务器更新到浏览器