首页 > 代码库 > avalonJS中this使用的注意事项
avalonJS中this使用的注意事项
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使用的注意事项
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。