我正在迁移一个旧脚本,我从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');
有没有人知道这里有什么问题,我怎么能以新的方式重写这个呢?
答案 0 :(得分:2)
看起来它正在使用名为reportData
的过滤器过滤reportFilter
,我猜测它正在作为参数传递false
。 Vue 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