AngularJS&Angular2 实战专题AngularJS开发WebApp坚持写

angularjs的作用域 @&=

2017-03-01  本文已影响27人  杨杨1314

       从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自定义的方法 这个就是自定义组件里面的绑定方法

到此为止,我对作用域的这三个符号的理解就说完了。这也只是目前我对他们的认识。欢迎指正!

上一篇下一篇

猜你喜欢

热点阅读