3 个回答

不要加this;直接@click="$Common..."

 (function anonymous(){ 
        with(this) { 
          return _c(
            "div",
            { attrs: { id: "app" } },
            [
              _m(0),
              _v(""), 
              _c("p", [_v(_s(msg))]),
              _v(""),
              _c("comp", { on: { myclick: handler } }),
            ], 
            1
          ); 
        } 
      });

这段代码是vue 内部把模板编译成可执行的h函数(h函数用来生成虚拟dom的,这里指的是_c)时,编译出的代码,可以看到这里用了with关键字,也就是说这里把this也就是当前组件实例,添加到当前代码块的作用域链的顶部,这样的话你看里面 的_c和 绑定属性msg 和事件 handler 查找时通过作用域链最后 会找到this(当前组件实例)上的msg和 handler以及 _c,这样也就解释了为什么这里不需要写this

(vue初始化的过程中会把 第一级的属性和 函数挂载到当前实例上,所以this.找得时候能直接找到,vue中组件的类时继承自 vue这个类的)

模板中this可写可不写, 我猜你这个是因为你的方法名带了$符号, vue内部直接去匹配vue本身的方法

推荐问题