我正致力于本地化并使用cookie来存储语言。我有Select
:
var select = new dijit.form.Select({
name: "languageSelect",
onChange: function (value) {
changeLanguage(value);
}
}, "languageSelect");
在onChange
事件中将调用方法changeLanguage
:
var changeLanguage = function (language) {
$.ajax({
type: "PUT",
url: "/api/accounts/changelanguage?language=" + language,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
window.location.reload(false);
}
});
};
此方法用ajax调用服务器然后重新加载页面。
问题是:在页面加载时,我需要阅读之前用户选择的Cookie language
并将其设置为Select
:
select.set("value", readCookie("language"));
但是,这个set
导致事件OnChange
触发,然后重新加载页面,这在开始时我不想要。我尝试使用下面的一个标志,但它没有用完:
var select = new dijit.form.Select({
name: "languageSelect",
style: { width: '200px' },
onChange: function (value) {
if (isLoading == false)
changeLanguage(value);
}
}, "languageSelect");
var isLoading = true;
select.set("value", readCookie("language"));
isLoading = false;
无论如何要解决它,我正在考虑阻止事件OnChange
触发set
方法,但还没有找到如何做到这一点。
答案 0 :(得分:6)
尝试添加false
,例如:
select.set("value", readCookie("language"));
到
select.set("value", readCookie("language"), false);
false
方法末尾的 set()
标记会阻止onChange
事件。