Vue.js 和 vue-i18n,从 $ajax 到 Object 文字的 json
Vue.js and vue-i18n, json from $ajax to object literals
我正在使用Vue.js插件vue-i18n进行国际化。它接受lang
和locales
参数,后者是属性名称和关联值的列表(object literals
)。因此,直接在 locales
选项中或存储在局部变量中引用object literals
列表按预期工作,如以下示例所示:
var locales = {
"en": {
"menu": {
"about": "about",
"news": "news",
"contact": "contact"
}
},
"fr": {
"menu": {
"about": "à propos",
"news": "actualités",
"contact": "contacter"
}
}
}
Vue.use(VueI18n, {
lang: 'fr',
locales: locales
});
请注意,尽管格式(整个列表的双引号),以上不是json array
,而是一个object literals
列表,其中string literals
属性名称。
现在,我一直在努力的是依赖 Json 文件,而不是直接在我的脚本中声明object literals
列表。例如,我尝试了一个 ajax 请求,例如:
Vue.use(VueI18n, {
lang: 'fr',
locales: $.ajax({
url: "../resources/i18n/locales.json",
dataType: "json",
type: "GET",
success: function(data) {
console.log(data);
}
})
});
url
字符串指向具有与上述完全相同的数据和格式的locales.json
文件,唯一的区别是它写在方括号内。
不过,我在这种方法上并没有取得多大成功,在我看来,这种方法没有多大意义,因为data
似乎被正确解析了。这是我在控制台中得到的:
Array[1]
0: Object
en: Object
menu: Object
about: "about"
contact: "contact"
news: "news"
fr: Object
menu: Object
about: "à propos"
contact: "contacter"
news: "actualités"
我想知道我做错了什么?
$.ajax
返回xmlHttpRequest
对象,而不是值。 您必须等到 ajax
的回调函数才能使用该值:
$.ajax({
url: "../resources/i18n/locales.json",
dataType: "json",
type: "GET",
success: function(data) {
Vue.use(VueI18n, {
lang: 'fr',
locales: data
});
console.log(data);
}
})
这也假设 Vue 在全球范围内可用
您可以尝试此方法:
// install the plugin
Vue.use(VueI18n)
// load the `fr` locale dynamically
Vue.locale('fr',
function () {
// should return a promise
return new Promise(function (resolve, reject) {
$.ajax('../resources/i18n/locales.json').done(resolve).fail(reject)
})
},
function () {
vue.config.lang = lang
}
)
相关文章:
- 添加文字和评论功能更新Div
- 函数未在Object.keys或Object.getOwnPropertyNames下列出,但可以调用
- delete在Object上效率低下,但在DOM Element's的数据属性,与null out相比
- 如何计算对象文字中的键
- I'我想放下画布上的文字.帮帮我
- 有没有一种方法可以列出Ember.Object的所有绑定
- 如何取消object.prototypes javascript的一个函数
- 对象文字方法上的Javascript绑定不起作用
- 为什么是文档.旧版应用程序中的DOM-object.properties为null
- 以ECMAScript 5及更高版本为目标时,八进制文字不可用
- 将*.js文件的内容放入Object中
- Object.prototype using 'this'
- ES6 模板文字是否比 eval 更安全
- 使用Object.create()的角度服务继承
- Vue.js 和 vue-i18n,从 $ajax 到 Object 文字的 json
- 如何判断对象是使用“Object.create”还是使用文字语法/“new”关键字创建的
- Object.defineObject,重用对象或对象文字表示法
- Object.defineProperty 和 Object Property 文字之间的区别
- Object.create是否创建对象文字的实例
- 奇怪的行为和使用Object的多个实例.在文字对象上创建