前面的没有白写,要不是前面的努力,怎么能有之后的优化呢,是吧
前两天使用了一个方式,但是只在当前页面有效,切换到其他页面就不行了,在切换回来也不行了,而且这个也不是好方法,还需要继续寻找解决方案。
如下:
import Ember from 'ember';
import { helper } from '@ember/component/helper';
// https://codeday.me/bug/20190402/870188.html
export function headTitle(title) {
Ember.$('head').find('title').text(title.replace('-', ''));
}
export default helper(headTitle);
{{head-title (t 'title.sero')}}
出现新的问题,切换多语言时,标题无法自动更新,又要找方法了¯_(ツ)_/¯
目前切换语言用的是如下方式:
import Ember from 'ember';
import config from '../config/environment';
export default Ember.Route.extend({
intl: Ember.inject.service(),
beforeModel() {
var lang = localStorage.getItem('lang') || config.LANG;
this.setLocale(lang);
},
setLocale: function (lang) {
this.get('intl').setLocale(lang);
},
actions: {
lang: function(lang) {
localStorage.setItem('lang', lang);
this.setLocale(lang);
}
}
});
谢谢你的解答,让我几次没解决差点就想放手了。(^_−)−☆
解决,例子:
import Ember from 'ember';
export default Ember.Service.extend({
intl: Ember.inject.service(),
'index': Ember.computed(function () {
return {
'title': this.get('intl').t('site.title')
};
}),
});
路由也是类似的方法。
非常感谢你的解答,我看了这两个模块不少文档和文章,也测试了好多次,一直没能解决。
多语言目前可以正常使用。
但是在 ember-seo-meta-tags 中使用就有问题。
根据 https://github.com/ember-intl/ember-intl/blob/master/docs/ember-service-api.md 给的文档。
在服务中使用
a、第一种方式
import Ember from 'ember';
export default Ember.Service.extend({
intl: Ember.inject.service(),
'index': {
title: this.intl.t('site.title'),
},
});
出错
Uncaught TypeError: Cannot read property 'intl' of undefined
文件解析为:
define("site/services/tags-data", ["exports"], function (_exports) {
"use strict";
Object.defineProperty(_exports, "__esModule", {
value: true
});
_exports.default = void 0;
var _default = Ember.Service.extend({
intl: Ember.inject.service(),
'index': {
title: (void 0).intl.t('site.title')
}
});
_exports.default = _default;
});
b、第二种方式
import Ember from 'ember';
export default Ember.Service.extend({
intl: Ember.inject.service(),
'index': {
title: this.get('intl').t('site.title'),
},
});
出错
Uncaught TypeError: Cannot read property 'get' of undefined
文件解析为:
define("site/services/tags-data", ["exports"], function (_exports) {
"use strict";
Object.defineProperty(_exports, "__esModule", {
value: true
});
_exports.default = void 0;
var _default = Ember.Service.extend({
intl: Ember.inject.service(),
'index': {
title: (void 0).get('intl').t('site.title')
}
});
_exports.default = _default;
});
在路由中使用也是类似的错误,我是哪里使用有误?