Vue.js Vue';计算';过滤器

Vue.js Vue';计算';过滤器,vue.js,vue-router,vue-component,Vue.js,Vue Router,Vue Component,是否可以从筛选器中提取变量,并在发生更改时更新筛选器?就像在计算属性中一样 我希望能够做到以下几点: Vue.filter('t', function(val) { return this.currentLanguage[val]; }); 当此.currentLanguage更改时,让筛选器重新编译模板 显然,我可以传入一个额外的参数,但我不想对每个字符串都这样做 我的代码在切换组件时工作,所以,有没有办法强制重新编译?我正在使用vue路由器,但是 this.$route.route

是否可以从筛选器中提取变量,并在发生更改时更新筛选器?就像在计算属性中一样

我希望能够做到以下几点:

Vue.filter('t', function(val) {
    return this.currentLanguage[val];
});
此.currentLanguage
更改时,让筛选器重新编译模板

显然,我可以传入一个额外的参数,但我不想对每个字符串都这样做

我的代码在切换组件时工作,所以,有没有办法强制重新编译?我正在使用
vue路由器
,但是

this.$route.router.go({
    path: this.$route.router.path,
        query: {
            t: + new Date()
         }
    })
}

不幸的是,它不会触发重新编译。

您可以使用以下方法定义反应性:

Vue.util.defineReactive(obj, key, val)

此外,我还为此创建了一个包:


您可以使用以下方法定义反应性:

Vue.util.defineReactive(obj, key, val)

此外,我还为此创建了一个包:


你能更深入地解释一下这个问题吗?我做了一个例子,过滤器依赖于一个外部变量。没问题。啊,对了,我明白了。我想我的问题是,我将我的翻译程序作为插件使用,带有
Vue.use(translator)
。因此,在我的转换器中,没有观察到
this.currentLanguage
,因为它只是对象的一个普通属性,而不是Vue数据中的属性。如果您提供了演示此行为的可运行代码,则会更容易提供帮助。你能更深入地解释一下这个问题吗?我做了一个例子,过滤器依赖于一个外部变量。没问题。啊,对了,我明白了。我想我的问题是,我将我的翻译程序作为插件使用,带有
Vue.use(translator)
。因此,在我的转换器中,没有观察到
this.currentLanguage
,因为它只是对象的一个普通属性,而不是Vue数据中的属性。如果您提供了演示此行为的可运行代码,则会更容易提供帮助。打字总是很棒的