这是什么.Vue的$ eval在做什么?

时间:2017-10-26 10:52:29

标签: javascript vue.js

我正在迁移一个旧脚本,我从0.11版本到2.5.4版本没有写入,我收到警告说:

  

使用普通JavaScript替换此。$ eval(' reportData | reportFilter false')     第327行:assets / js / custom-reports.js     原因:vm。$ eval已被删除,因为它没有实际用途     更多信息:http://vuejs.org/guide/migration.html#vm-eval

我可以在代码中看到它设置这些值:

this.$set('reportData[' + key + '].selected', !selectAll);

在这里使用它们:

var data = this.$eval('reportData | reportFilter false');

有没有人知道这里有什么问题,我怎么能以新的方式重写这个呢?

1 个答案:

答案 0 :(得分:2)

看起来它正在使用名为reportData的过滤器过滤reportFilter,我猜测它正在作为参数传递falseVue 2中的过滤器的工作方式不同,因此您需要将reportFilter移动到某个方法,但是,如果在多个组件中使用这些过滤器,则可能需要创建{{3}所以:

// Filters mixin
const Filters = {
  methods:{
    reportFilter(data, flag){
      // reportFilter method
    }
  }

}

然后,在使用reportFilter的任何组件中,您将需要使用mixin:

new Vue({
  // ...
  mixins: [Filters],
  // ...
})

然后,您可以将$eval代码更改为:

var data = this.reportFilter(reportData, false);

这是一个JSFiddle,可以让您了解其工作原理:mixin