我正在进行本地化并使用 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 调用,然后重新加载页面。
问题是:在页面加载时,我需要读取language
用户之前选择的 cookie 并将其设置为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
方法,但还没有找到如何去做。