Angularjs留存(三)
PS:AngularJS留存系列主要是用来记录一些自己在学习其他文章时觉得有必要留存一下的fortune! 文章可能会很长(默认每篇17个小的知识点),但是我们可以使用Ctrl + F 来查找啦! 1、$parse/$eval和$observe/$watch如何区分 $parse和$eval 首先,$parse跟$eval都是用来解析表达式的, 但是$parse是作为一个单独的服务存在的。$eval是作为scope的方法来使用的。 var getter = $parse('user.name');
var setter = getter.assign;
setter(scope,'new name');
getter(context,locals) // 传入作用域,返回值
setter(scope,0)">'new name') // 修改映射在scope上的属性的值为‘new value’
$eval 即scope.$eval,是执行当前作用域下的表达式,如:scope.$eval('a+b'); 而这个里的a,b是来自 scope = {a: 2,b:3}; $eval: function(expr,locals) {
return $parse(expr)(this,locals);
},
可以找到它也是基于$parse,不过它的参数已经被固定为this,就是当前的scope,所以$eval只是在$parse基础上的封装而已,是一种$parse快捷的API。 2、AngularJS内幕详解之 Directive controller这是一个指令的控制器实例。 指令可以有控制器,这说得通是因为指令可以创建 scope 。该控制器在所有的同一 scope 的指令中共享,同时可以作为 link 函数的第四个参数被访问到。在同一层级的scope上,这些控制器是指令间的一个可用的通信信道,也可能包含指令自身。
使用控制器别名允许你在模板里面引用控制器,因为他在 scope 中是可见的。
在我们的工作中,如果我们的指令需要依赖其他的指令时,require 很有用。 举个例子, 你或许有个 dropdown 指令,他依赖一个 list-view 指令, 或者一个错误弹框的指令依赖一个错误消息指令。在下面的例子中,反过来说,定义一个 needs-model 指令, 如果他没有找到依赖的 ng-model 就会抛出一个错误 —— 因为 needs-model指令使用了那个指令,或者某种程度上取决于他在元素上可用。 angular.module('PonyDeli').directive(‘needsModel’, function (){returnrequire: 'ngModel’,} }); <div needs-modelng-model=’foo’></div> 3、 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |