问答

请教一下大佬,图一报错的原因是什么?

作者:admin 2021-05-05 我要评论

### 不要加this;直接@click="$Common..." ### (function anonymous(){ with(this) { return _c( "div", { attrs: { id: "app" } }, [ _m(0), _v(""), _c("p", [_...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

image.png

image.png

image.png

###

不要加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本身的方法

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 请教一下大佬,图一报错的原因是什么?

    请教一下大佬,图一报错的原因是什么?

  • nodejs 使用 sequelize 查 mysql 报错

    nodejs 使用 sequelize 查 mysql 报错

  • element ui  tab问题

    element ui tab问题

  • JS递归怎么实现这道题目?

    JS递归怎么实现这道题目?

腾讯云代理商
海外云服务器