我正在致力于本地化并使用cookie来存储语言.我有一个Select
:
var select = new dijit.form.Select({
name: "languageSelect",
onChange: function (value) {
changeLanguage(value);
}
}, "languageSelect");
Run Code Online (Sandbox Code Playgroud)
在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);
}
});
};
Run Code Online (Sandbox Code Playgroud)
这个方法用ajax调用服务器然后重新加载页面.
问题是:在页面加载时,我需要读取language
用户之前选择的cookie 并将其设置为Select
:
select.set("value", readCookie("language"));
Run Code Online (Sandbox Code Playgroud)
但是,这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;
Run Code Online (Sandbox Code Playgroud)
无论如何要解决它,我正在考虑防止事件OnChange
触发set
方法,但还没有找到如何做到这一点.
尝试添加false
,如:
select.set("value", readCookie("language"));
Run Code Online (Sandbox Code Playgroud)
至
select.set("value", readCookie("language"), false);
Run Code Online (Sandbox Code Playgroud)
false
标志在set()
方法结束时将阻止该onChange
事件.
归档时间: |
|
查看次数: |
3233 次 |
最近记录: |