VUE003. 解决data中使用vue-i18n不更新视图问题(computed属性)
案例
在国际化开发中,有一部分需要国际化的文字是由数据驱动的储存在data中,然而VUE的data存在很多无法实时更新视图的问题,比如v-for循环的标签,当数据层次过深,通过源数据数组的索引改变它的值是无法实时更新到视图上的。
这个问题可以用 vue.js 提供的 this.$set( ) 或者 vm.$forceUpdate 方法解决。前者向响应式对象中添加一个 property 并确保这个新 property 同样是响应式的,且触发视图更新。后者则是强制渲染视图。
本文介绍用computed属性解决 vue-i18n 不更新视图的问题。
问题代码
data() {
return {
label: i18n.t(key)
// 此处vm.$t(key)亦可
}
}
}
解决方法
data(){
return {}
}
computed: {
label() {
return i18n.t(key)
}
}
扩展知识 - computed属性
在computed属性中,它之所以处理起来很快,正是因为它返回的属性数据结构简单。
个人理解它不应该包含 DOM操作、修改外部变量、异步操作 ,如果想解决这个问题,还需要另外定义一个函数来储存这个操作,再使用computed属性中定义的函数去调用它:
computed: {
dataSource() {
return [
label: i18nt(key)
click: () => {
this.someThing()
}
]
}
}
methods: {
someThing() {
this.$router.push({ name: 'HomePage' })
}
}
如果在computed属性中直接定义click的事件为 $router.push( ) ,将会出现报错,于是应该用以上的方法解决。

直接改变外部变量同样报错:

- END -
VUE003. 解决data中使用vue-i18n不更新视图问题(computed属性)的更多相关文章
- 在编辑模式中一个ASP.NET应用详细视图显示集合属性 编辑模式和只读模式
https://documentation.devexpress.com/#Xaf/CustomDocument3230
- vue-i18n国际化在data中切换不起作用
vue-i18n是一个针对于vue的国际化插件,使用非常简单,具体使用方式看我细细道来. 实现方式 1. 下载包 npm install vue-i18n 2. 配置 在main.js文件中加入如下配 ...
- vue调用组件,组件回调给data中的数组赋值,报错Invalid prop type check failed for prop value. Expecte
报错信息: 代码信息:调用一个tree组件,选择一些信息 <componentsTree ref="typeTreeComponent" @treeCheck="t ...
- vue filters中使用data中数据
vue filters中 this指向的不是vue实例,但想要获取vue实例中data中的数据,可以采用下面方法.在 beforeCreate中将vue实例赋值给全局变量app0,然后filters中 ...
- vue 需求 data中的数据之间的调用
我遇到过这种情况 就是在我的data中 会有数据调用data中的其他数据 如图 我的alertInfoType需要拿到screeningCondition中type的值 用过vue的都知道 我是不 ...
- Vue 在beaforeCreate时获取data中的数据
众所周知,vue在beforecreate时期是获取不到data中的 数据的 但是通过一些方法可以实现在beforecreate时获取到data中的数据 暂时想到两种放发可以实现,vue在before ...
- 解决VSCode中使用vetur插件格式化vue文件时,js代码会自动加上冒号和分号
解决VSCode中使用vetur插件格式化vue文件时,js代码会自动加上冒号和分号 在设置中把"vetur.format.defaultFormatter.js": " ...
- vue—data中变量和字符串拼接
#变量和字符串的拼接# 写项目中,遇到了这样的一个问题:怎样在一个div里面显示两个data中的数据?我的问题描述清楚了吗?... 看图吧: 这是用户最初的需求~ 这是用户后来的需求,嗯……就是 ...
- vue data中的对象的属性如何使用watch监听
在写项目的时候遇到了一个问题,就是需要动态监听data中一个对象的属性的变化.遇到了许多坑,在此过程中也发现了两种解决方案. 一.通过deep属性实现 data() { return { parent ...
随机推荐
- JS替换字符
var msg='A|B|C|D|E|F|G'; 方式1: var newMsg=msg.replace("|",""); 方式2: ps:适用特殊字符 var ...
- Salesforce Integration 概览(三) Remote Process Invocation—Fire and Forget(远程进程调用-发后即弃)
本篇参考:https://resources.docs.salesforce.com/sfdc/pdf/integration_patterns_and_practices.pdf 我们在上一篇讲了远 ...
- 一文彻底搞清 Gradle 依赖【转】
来源:曾是放牛娃 www.jianshu.com/p/59fd653a54d2 转自:https://mp.weixin.qq.com/s?__biz=MzA3MDMyMjkzNg==&mid ...
- 杭电OJ 输入输出练习汇总
主题 Calculate a + b 杭电OJ-1000 Input Each line will contain two integers A and B. Process to end of fi ...
- 靶机Cyberry
工具 hydra.crunch.dirbuster 涉及到的点 Port knocking(端口试探) Brainfuck编码 ftp爆破 ssh爆破 openssl enc加密 命令执行漏洞 Lin ...
- Burp - Turbo Intruder
Turbo Intruder 基础使用总结,把Python代码都记录下,要是有啥骚姿势,求各位师傅交流. 个人感觉超强的一款Burp插件,反正超快 Link: https://github.com/P ...
- .jsp文件的使用和理解以及一些小练习和Listener监听器
什么是 jsp,它有什么用? jsp 的全换是 java server pages.Java 的服务器页面.jsp 的主要作用是代替 Servlet 程序回传 html 页面的数据.因为 Servle ...
- Run Shell Commands in Python
subprocess.call This is the recommended way to run shell commands in Python compared with old-fashio ...
- 慕慕生鲜上线&&腾讯云服务器配置准备
1.购买服务器并配置环境 1.1 购买 618购买了腾讯云服务器三年最低配置(1核2G 1Mbps 50G云盘),一时激动忘记了购买前领优惠券,痛失25元. 1.2 环境配置 系统是 CentOS L ...
- netty系列之:内置的Frame detection
目录 简介 Frame detection DelimiterBasedFrameDecoder FixedLengthFrameDecoder LengthFieldBasedFrameDecode ...