用ES6写法写vue,调用自定义方法报错:this.fname is not a function

class vApp extends Vue{
    constructor () {
        var props = {
            el: '#vApp',
            data: {
                notice: true
            }
        };
        spuer();
    }
    toggle (val) {
        this.selected = val;
    }
    isEmpty (strArr) {
        var is = false;
        strArr.map(item => {
            if(/^\s*$/i.test(item)){
                is = true;
            }
        });
        return is;
    }
    subLogin () {
        if(this.isEmpty()){
            //...
        }
    }
}
var vapp = new vApp();

代码大体是这样的,但是在执行subLogin的时候,会报错this.isEmpty is not a function,toogle函数可以正确改变selected的值,这里的this应该是绑定的实例没错吧,为什么函数之间相互调用会失败呢,(使用vapp.isEmpty是可以调用到的)而且使用了箭头函数的话,this会被绑定,获取数据是通过$.data.xxx也访问不到属性,但是vapp._data.xxx可以,这种写法是推荐的吗,有更好地写法吗?

阅读 12.4k
2 个回答

typo!!!

siEmpty 应为 isEmpty

→_→

在调用subLogin 方法的时候应该是产生回调了。试试在调用subLogin 的方法的时候在后面加上.bind(this)试试。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏