用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.3k
2 个回答

typo!!!

siEmpty 应为 isEmpty

→_→

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

推荐问题
宣传栏