the component's properties are bound to the controller rather than to the scope.
we can move all our property binding definitions to bindToController and make it an object literal
这两段话引用自Pascal Precht在thoughtram blog上的一篇文章(链接:
/2015/01/02/exploring-angular-1.3-bindToController.html)
意思是,当使用了bindToController选项后,组件的属性会被绑定到controller上,而不是scope上,并且我们可以把原本定义在scope中的属性绑定都迁移到bindToController选项中来,并成为对象字面量的形式
意即,原本像如下形式的绑定策略:
scope:{ name:'=', age:'='}
更改为如下的形式:
bindToController:{ name:'=', age:'='}
接着,我们需要controller和controllerAs的帮忙,对controller进行实例化:
bindToController:{ name:'=', age:'='},controller: function(){ var vm = this},controllerAs: 'ctrl'此时,controller已经作为对象字面量的形式而存在了,ctrl是它的实例,于是,我们可以在template中,以ctrl.XXXX的形式来调用被绑定到controller上的组件属性
这里附上具体的demo:
但如果需要在link函数的dom操作中用到这些绑定的属性,该怎么办呢?按照原来的做法,我们当然是使用scope.xxxx的形式来调用这些属性,但现在我们不用scope了,所以,我们要借助require选项,如下:
require:'这里是指令的名称'
接着,在link函数传入第四个参数ctrl,我们就可以使用这些属性了,再附上demo:
以上是我对bindToController的浅薄认识,恳请各位大神指出不足之处,谢谢