大佬教程收集整理的这篇文章主要介绍了在angularjs中自动更新范围变量,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
为了说明这一点,请查看www.angularjs.org中的示例,“连接后端”.粗略地说,我们可以看到以下内容:
var projects = $firebase(new Firebase("http://projects.firebase.io")); $scope.projects = projects;
在此之后,对项目对象所做的所有更新(通过更新,无论是本地还是远程)都将自动反映在范围绑定的视图上.
我怎样才能在我的项目中实现同样的目标?就我而言,我想从服务中返回一个“自我更新”变量.
var inBox = inBoxService.inBoxForUser("fred"); $scope.inBox = inBox;
什么机制让$scope知道它应该更新?
编辑:
针对这些建议,我尝试了一个基本的例子.我的控制器:
$scope.auto = { value: 0 }; setInterval(function () { $scope.auto.value += 1; console.log($scope.auto.value); },1000);
而且,在我看来的某个地方:
<span>{{auto.value}}</span>
不过,它只显示0.我做错了什么?
我做了一个演示plunker:http://plnkr.co/edit/dmu5ucEztpfFwsletrYW?p=preview
我使用$timeout伪造更新.
诀窍是使用普通的javascript引用:
>您需要将对象传递给范围.
>您不能覆盖该对象,只需更新或扩展它.
>如果你覆盖它,你将失去“绑定”.
>如果您使用$http,它将为您触发摘要.
>因此,每当发生更改时,范围变量引用在服务中更新的同一对象,并且将通过摘要通知所有观察者.
> AFAIK,这就是$firebase&重新工作.
>如果进行多次更新,则需要重置属性.
>由于您在应用程序中持有对象的引用,因此您需要了解内存泄漏.
例如:
服务:
app.factory('inBoxService',function($http){ return { inBoxForUser: function(user){ var inBox = {}; $http.get('/api/user/' + user).then(function(response){ angular.extend(inBox,response.data); }) return inBox; } }; });
控制器:
app.controller('ctrl',function(inBoxService){ $scope.inBox = inBoxService.inBoxForUser("fred"); });
以上是大佬教程为你收集整理的在angularjs中自动更新范围变量全部内容,希望文章能够帮你解决在angularjs中自动更新范围变量所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。