最好贴源码,还不如你自己去看源码。。另外,没搞懂你想做什么~
亲,是我没描述明白 - -,看下补充 。。
@羽铭: angular1中是利用脏检查来判断对象变化的。当触发了有可能修改对象值的事件后,脏检查启动。通过多次比较对象值来判断,如果最后的值稳定了,那么就把这个值作为最终的值。现在可以有更好的方式实现:
var obj = {}; Object.defineProperty(obj, 'test', { get: function(){return this.abc;}, set: function(v){ this.abc = v; } }); obj.test = '123'
http://segmentfault.com/a/1190000002773689
答非所问,不过谢谢。
你说的 "scope对象" 是 angularjs app 的 全局对象 $scope?
双向绑定的scope,我想让一个var对象转为和scope一样实施监听并且可以在DOM加载完识别的对象。目测并不可能,就算不可能我也想知道AngularJS源码中是如何做到的。
你想把var转换成scope,很简单,只需两步走:
第一步,把这个对象绑定到scope上面,$scope.test = test
第二步,监听这个变量,$scope.$watch("test",function(){});
搞定!
亲,谢谢你的回答,不过我要的是类型转换,不改变对象。让var对象实现和scope一样的功能。
@羽铭:
楼上提供的方法不知道可行不可行,原理差不多。
你知道怎么实现了,自己封装一下 不就得了。
另外,不推荐把var变成scope的功能,这样会造成绑定的数据量过多,要知道!——脏值检查可是有性能消耗的,如果你随便使用var定义个局部变量,都绑定到$scope上面.....那跟在普通的js中全使用全局变量没什么区别!你还是好好考虑下吧,最好不要这么干!
$scope.$watch,你的描述太不清楚了