【发布时间】:2014-12-12 21:46:51
【问题描述】:
升级到 Meteor 1.0.1(安全更新)后,我遇到了一些奇怪的行为(这可能是由于软件包更新造成的)。首先它是定义的,但是当我导航到另一个页面时它是未定义的。
启动时客户端文件夹中有以下内容
var getUserLanguage;
getUserLanguage = function () {
var lang;
lang = void 0;
if (navigator && navigator.userAgent && (lang = navigator.userAgent.match(/android.*\W(\w\w)-(\w\w)\W/i))) {
lang = lang[1];
}
if (!lang && navigator) {
if (navigator.language) {
lang = navigator.language;
} else if (navigator.browserLanguage) {
lang = navigator.browserLanguage;
} else if (navigator.systemLanguage) {
lang = navigator.systemLanguage;
} else {
if (navigator.userLanguage) {
lang = navigator.userLanguage;
}
}
lang = lang.substr(0, 2);
}
console.log("current language is", lang);
Session.set("currentUserLang", lang);
console.log('aaa ' + Session.get("currentUserLang"));
return lang;
};
Meteor.startup(function () {
Session.set("showLoadingIndicator", true);
TAPi18n.setLanguage(getUserLanguage())
.done(function () {
Session.set("showLoadingIndicator", false);
})
.fail(function (error_message) {
// Handle the situation
//console.log(error_message);
});
});
然后我的编辑模板JS文件中有以下内容
Template.editProducer.rendered = function () {
// Setup parsley form validation
$('#form').parsley({trigger: 'change'});
// sets parsley lang
Tracker.autorun(function () {
console.log("lang " + Session.get("currentUserLang"));
var curentLang = Session.get("currentUserLang");
console.log("curentLang " + curentLang);
if (Session.equals("currentUserLang", curentLang))
window.ParsleyValidator.setLocale(curentLang);
});
};
我收到以下错误
edit_producer.js?639fc31a07a550f410d552dfe6242ac967371e3c:15curentLang 未定义 debug.js:41 来自 Tracker afterFlush 函数的异常:错误:未定义在目录中不可用 在 Object.f.setLocale
【问题讨论】:
-
我认为不是
undefined的会话,我认为异常来自window.ParsleyValidator.setLocale(curentLang)。但是,我没有经验。 -
curentLang var 未定义,因为它没有从返回未定义的会话获取中获取
标签: meteor iron-router