標籤:方法調用 his highlight 方案 模型 注意事項 read 位置 func
this指標一般是基於宿主環境而存在的一個變數,一般是指向宿主對象,而對於MVVM架構來說,一方面需要在VM中建立對自身對象的操作,同時也可以在V(view)中使用到VM中定義到的方法,以下代碼協助理解:
//JS 模型var vm = avalon.define({ $id:‘vmID‘, $getData: function(){ console.log(this); // this指標的指向因著調用位置的不確定而不確定 }})avalon.ready(function(){ vm.$getData();})// DOM結構<div ms-controller="vmID"> <a href="javascript:void(0);" ms-click="$getData()">擷取資料</a></div>
這樣一來,對於方法在VM模型中使用列印的便是VM對象,而對於在DOM節點中使用的模型對象方法調用時,列印的便是DOM節點對象,給予此在MVVM架構中使用this指標時務必要小心。
解決方案可以是,不要直接使用VM對象中的$getData()方法,而是重新定義一個方法:
//JS 模型var vm = avalon.define({ $id:‘vmID‘, $getData: function(){ console.log(this); //this指標的指向不確定 }, $jump: function(){ console.log(this); //this指標指向DOM節點對象 vm.$getData(); //vm指向模型對象 }})avalon.ready(function(){ vm.$getData();})// DOM結構<div ms-controller="vmID"> <a href="javascript:void(0);" ms-click="$jump()">擷取資料</a></div>
avalonJS中this使用的注意事項