从16年年底就在学习ng,但是一直对它的作用域@&=模糊不清,查资料也深感晦涩。直到今天写项目,这几天写下来,才渐渐的对其有所了解。
首先,这是我自己做的一个组件,是一个文本框的组件,如下:
来解释一下这个组件,有五个参数,分别是ljl,ljt,ljtip,ljd,ljf。这几个参数均可自行设置值。
ljl是用来控制文本框的最大输入字数。
ljt是用来显示文本框里面的文字,一般是从数据库去出来,显示在这里面。
ljtip是用来设置文本框的错误提示信息。
ljd是用来控制错误提示信息是否让他显示,true /false。
ljf是文本框的事件,这个我给了一个ng-blur。
其次,重点就来了,下面就重点介绍一下@&=这几个作用域的含义:
这是指令directive内容
这就是我的自定义指令,写在scope里面。那么我的理解就是:
1:ljl:"@": 这个作用域相当于ng-model,但是为什么用@呢?我的理解是它在自定义元素里面给死了值,拿着这个model(ng-model)就可以在具体的组件里面显示了,而在controller里面是不能进行重复定义的,例如:
这个是自定义元素里面定义的
这个就是我自己写的组件,在组件里就可以直接用,300就会直接显示
2:ljt:"=": 这个作用域也是相当于ng-model,同样的问题,为什么用=呢?我的理解是:这个ljt是我定义的文本框内容,上面说到了,有可能是数据库取出来的,那么,从哪里取的呢?肯定是数据库了。所以,controller便是页面和后台相互交互的一个桥梁。所以,这个ljt肯定是在controller里面定义的全局变量,然后在组件里去用它,例如:
这个是自定义元素里面定义的
这个就是controller里面的,就相当于数据库去出来的内容
这个就是自定义的组件里面,我要显示的
3:ljf:"&":这个作用域也相当于ng-model;但是为啥要用它呢?前面说了,我给这个文本框一个ng-blur事件,所以,不用解释,这个&符就是用于绑定方法的了,例如:
这个是自定义元素里面定义的
这个就是a1s自定义的方法
这个就是自定义组件里面的绑定方法
到此为止,我对作用域的这三个符号的理解就说完了。这也只是目前我对他们的认识。欢迎指正!
作者:杨立军
链接:https://www.jianshu.com/p/5e0ac9d6a24c
共同学习,写下你的评论
评论加载中...
作者其他优质文章