首页 新闻 赞助 找找看

AngularJS是如何创建一个Scope对象的?

0
悬赏园豆:50 [已解决问题] 解决于 2015-12-21 14:07

我想在Controller中,把var转为scope对象。最好贴出AngularJS源码,感激不尽。

问题补充:

双向绑定的scope,我想让一个var对象转为和scope一样实施监听并且可以在DOM加载完识别的对象。目测并不可能,就算不可能我也想知道AngularJS源码中是如何做到的。

羽铭的主页 羽铭 | 初学一级 | 园豆:101
提问于:2015-12-18 13:53
< >
分享
最佳答案
0

最好贴源码,还不如你自己去看源码。。另外,没搞懂你想做什么~

收获园豆:40
幻天芒 | 高人七级 |园豆:37175 | 2015-12-19 10:05

亲,是我没描述明白 -  -,看下补充 。。

羽铭 | 园豆:101 (初学一级) | 2015-12-19 14:14

@羽铭: angular1中是利用脏检查来判断对象变化的。当触发了有可能修改对象值的事件后,脏检查启动。通过多次比较对象值来判断,如果最后的值稳定了,那么就把这个值作为最终的值。现在可以有更好的方式实现:

var obj = {};
Object.defineProperty(obj, 'test', {
  get: function(){return this.abc;},
  set: function(v){
    this.abc = v;
  }
});

obj.test = '123'
幻天芒 | 园豆:37175 (高人七级) | 2015-12-19 21:09
其他回答(4)
0

http://segmentfault.com/a/1190000002773689

搁忆 | 园豆:612 (小虾三级) | 2015-12-18 14:27

答非所问,不过谢谢。

支持(0) 反对(0) 羽铭 | 园豆:101 (初学一级) | 2015-12-18 17:23
0

你说的 "scope对象" 是 angularjs app 的 全局对象 $scope?

Yu | 园豆:12980 (专家六级) | 2015-12-19 08:39

双向绑定的scope,我想让一个var对象转为和scope一样实施监听并且可以在DOM加载完识别的对象。目测并不可能,就算不可能我也想知道AngularJS源码中是如何做到的。

支持(0) 反对(0) 羽铭 | 园豆:101 (初学一级) | 2015-12-19 14:11
0

你想把var转换成scope,很简单,只需两步走:

第一步,把这个对象绑定到scope上面,$scope.test = test

第二步,监听这个变量,$scope.$watch("test",function(){});

搞定!

收获园豆:10
xingoo | 园豆:711 (小虾三级) | 2015-12-20 23:08

亲,谢谢你的回答,不过我要的是类型转换,不改变对象。让var对象实现和scope一样的功能。

支持(0) 反对(0) 羽铭 | 园豆:101 (初学一级) | 2015-12-21 08:49

@羽铭: 

楼上提供的方法不知道可行不可行,原理差不多。

你知道怎么实现了,自己封装一下 不就得了。

另外,不推荐把var变成scope的功能,这样会造成绑定的数据量过多,要知道!——脏值检查可是有性能消耗的,如果你随便使用var定义个局部变量,都绑定到$scope上面.....那跟在普通的js中全使用全局变量没什么区别!你还是好好考虑下吧,最好不要这么干!

支持(0) 反对(0) xingoo | 园豆:711 (小虾三级) | 2015-12-21 08:58
0

$scope.$watch,你的描述太不清楚了

唐大侠 | 园豆:400 (菜鸟二级) | 2015-12-29 00:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册