可以在vue.js应用程序中排除`this`关键字吗?

时间:2018-08-30 12:30:29

标签: vue.js vuejs2

实际上,我正在关注Douglas Crockford jslint。

使用它时会发出警告。

[jslint]意外的“ this”。 (unexpected_a)

我看不到该错误的任何解决方案。不要说在jslist.options中添加this并将其标记为true。

有没有不用这个的方法吗?

编辑 附加代码

//这里有一些vue组件

   <script>
    export default {
      name: "RefereshPage",
      data() {
        return {
          progressValue: 0
        }
      },
      methods:{
        getRefreshQueue(loader){
          console.log(this.progressValue); // ERROR come here [jslint] Unexpected 'this'. (unexpected_a) 
      }
    }
   }
    </script>

查看此jsfiddle。您如何避免使用它?

https://jsfiddle.net/himmsharma99/ctj4sm7f/5/

4 个答案:

答案 0 :(得分:4)

我已经在评论中指出:

使用$statement = $db->prepare('insert into _table (column1, column2, etc.) values (?, ?, etc.) if (isset($_GET['var']) || isset($_GET['var1'])) { $pieces=explode("delimeter", $var); // $data = array($somevar, $someothervar, $pieces[0], pieces[1], etc.); } else { // other things to do with // $data = array($somevar, $someothervar, etc.); } $statement->execute($data); 是vue.js如何在组件中工作的组成部分。您可以在此处详细了解它如何代理并跟踪依赖关系:https://vuejs.org/v2/api/#Options-Data

答案 1 :(得分:2)

正如其他人所说,最好不要启用lint或改用ESLint。但是,如果您坚持要采取一种解决方法,则可以在vue实例上使用mixin和$mount方法,以避免完全使用this ..

    let vm;

    const weaselMixin = {
        methods: {
            getdata() {
                console.log(vm.users.foo.name);
            }
        },
        mounted: function () {
            vm.getdata();
        }
    };

    vm = new Vue({
        mixins: [weaselMixin],
        data: {
            users: {
                foo: {
                    name: "aa"
                }
            }
        }
    });

    vm.$mount('#app');

See the modified JSFiddle

如您所见,这只会使应该是相当简单的组件复杂化。它只是表明您不应该为了满足您的短毛而改变vue的工作方式。

我建议您通过this article。这部分特别重要..

  

Vue.js可以在 this 上下文中使用我们的数据和方法。因此,通过编写this.firstName,我们可以访问数据对象内的firstName属性。请注意,是必需的。

答案 2 :(得分:0)

在您发布的代码中,getRefreshQueue定义后似乎缺少}。这不是您的linter所描述的错误,但可能会因为语法错误而感到困惑?

答案 3 :(得分:0)

可以使用新的Composition API。 Vue 3将具有内置支持,但是您可以使用this package获得Vue 2支持。

不含this的组件示例(来自vuejs.org):

<template>
  <button @click="increment">
    Count is: {{ state.count }}, double is: {{ state.double }}
  </button>
</template>

<script>
import { reactive, computed } from 'vue'

export default {
  setup() {
    const state = reactive({
      count: 0,
      double: computed(() => state.count * 2)
    })

    function increment() {
      state.count++
    }

    return {
      state,
      increment
    }
  }
}
</script>