有一个需求,做 i18n 国际化,网上看的诸多方案不太喜欢(都要在模板里调用一个翻译函数),于是捣鼓了一种方式:
让 vue app 实例持有一份 i18n 清单,并通过 props 传递给每个实例或组件,这样每个实例都能使用这个 i18n 对象了。
不过这种写法还是比较丑陋的,因为传递的方式是这样的,且每个地方都要写一遍:
<router-view v-bind:i18n="i18n" class="view"></router-view>
必须要显式的把 i18n 传递给 router-view
,我希望这一步能够自动完成,即写的时候不用写 v-bind:i18n="i18n"
:
<router-view class="view"></router-view>
不知道 vue 支持不支持这种操作,怎么做?
题外话,vue 有没有一种方式,让组件访问上级实例的数据?就是说我不把 i18n 通过 props 传递给组件,组件(模板)也能访问 i18n,如果可以这样,那么更好了,可以少写很多代码。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.