the component's properties are bound to the controller rather than to the scope.html
we can move all our property binding definitions to bindToController and make it an object literalangularjs
這兩段話引用自Pascal Precht在thoughtram blog上的一篇文章(連接:http://blog.thoughtram.io/angularjsdom
/2015/01/02/exploring-angular-1.3-bindToController.html)函數
意思是,當使用了bindToController選項後,組件的屬性會被綁定到controller上,而不是scope上,而且咱們能夠把本來定義在scope中的屬性綁定都遷移到bindToController選項中來,併成爲對象字面量的形式ui
意即,本來像以下形式的綁定策略:this
scope:{ name:'=', age:'=' }
更改成以下的形式:spa
bindToController:{ name:'=', age:'=' }
接着,咱們須要controller和controllerAs的幫忙,對controller進行實例化:.net
bindToController:{ name:'=', age:'=' }, controller: function(){ var vm = this }, controllerAs: 'ctrl' 此時,controller已經做爲對象字面量的形式而存在了,ctrl是它的實例, 因而,咱們能夠在template中,以ctrl.XXXX的形式來調用被綁定到controller上的組件屬性
這裏附上具體的demo:code
https://jsfiddle.net/lee1994522/rvu0xqut/4/ component
但若是須要在link函數的dom操做中用到這些綁定的屬性,該怎麼辦呢?按照原來的作法,咱們固然是使用scope.xxxx的形式來調用這些屬性,但如今咱們不用scope了,因此,咱們要藉助require選項,以下:
require:'這裏是指令的名稱'
接着,在link函數傳入第四個參數ctrl,咱們就能夠使用這些屬性了,再附上demo:
https://jsfiddle.net/lee1994522/up8mqwy7/
以上是我對bindToController的淺薄認識,懇請各位大神指出不足之處,謝謝